[Feature Request] Subagents should inherit Task* tools for native multi-agent coordination
Bug Description
Title: Subagents should inherit Task* tools for native multi-agent coordination
Summary:
When spawning subagents via the Task tool to work on tasks created by the main agent, the subagents don't have access to TaskGet/TaskUpdate/TaskList tools. This makes the "native Ralph" pattern (main agent creates task graph → spawns parallel workers → workers complete tasks) unnecessarily clunky.
What I tried:
- Main agent creates tasks with dependencies using TaskCreate
- Main agent spawns background subagents via
Task(run_in_background=true) - Subagents try to use TaskGet to read their assigned task
What happened:
Subagents don't have Task* tools. They had to:
- Explore
~/.claude/tasks/to find the session directory - Manually read JSON files via Read tool
- Manually write JSON files to update status
This works but is fragile (guessed wrong paths initially, no validation, potential race conditions).
Expected behavior:
Subagents spawned via Task tool should either:
- Inherit Task* tools from parent session, OR
- Have CLAUDE_CODE_TASK_LIST_ID passed automatically so they know where to look
Why this matters:
The Tasks announcement described spawning subagents to work on a shared task list as a core use case. But currently, standalone claude processes with CLAUDE_CODE_TASK_LIST_ID env var have better task access than subagents spawned from inside Claude Code. The "native" path is worse than the external bash loop path.
Environment Info
- Platform: darwin
- Terminal: ghostty
- Version: 2.1.27
- Feedback ID: 1d1aef95-00d3-4fc1-81ff-88f6c2648d6f
Errors
[{"error":"Error: NON-FATAL: Lock acquisition failed for /Users/tengjizhang/.local/share/claude/versions/2.1.27 (expected in multi-process scenarios)\n at DUR (/$bunfs/root/claude:3589:2098)\n at jPA (/$bunfs/root/claude:3589:1209)\n at processTicksAndRejections (native:7:39)","timestamp":"2026-01-31T18:49:47.802Z"},{"error":"Error: Request was aborted.\n at n5R (/$bunfs/root/claude:1522:23441)\n at vpB (/$bunfs/root/claude:4719:7450)\n at processTicksAndRejections (native:7:39)","timestamp":"2026-01-31T18:50:32.260Z"},{"error":"Error\n at Tb (/$bunfs/root/claude:41:1143)\n at <anonymous> (/$bunfs/root/claude:46:10080)\n at emit (node:events:92:22)\n at endReadableNT (internal:streams/readable:861:50)\n at processTicksAndRejections (native:7:39)\n at request (/$bunfs/root/claude:48:2147)\n at processTicksAndRejections (native:7:39)","timestamp":"2026-01-31T18:55:51.917Z"},{"error":"Error\n at Tb (/$bunfs/root/claude:41:1143)\n at <anonymous> (/$bunfs/root/claude:46:10080)\n at emit (node:events:92:22)\n at endReadableNT (internal:streams/readable:861:50)\n at processTicksAndRejections (native:7:39)\n at request (/$bunfs/root/claude:48:2147)\n at processTicksAndRejections (native:7:39)","timestamp":"2026-01-31T18:56:22.802Z"},{"error":"Error\n at Tb (/$bunfs/root/claude:41:1143)\n at <anonymous> (/$bunfs/root/claude:46:10080)\n at emit (node:events:92:22)\n at endReadableNT (internal:streams/readable:861:50)\n at processTicksAndRejections (native:7:39)\n at request (/$bunfs/root/claude:48:2147)\n at processTicksAndRejections (native:7:39)","timestamp":"2026-01-31T18:56:39.692Z"},{"error":"Error\n at Tb (/$bunfs/root/claude:41:1143)\n at <anonymous> (/$bunfs/root/claude:46:10080)\n at emit (node:events:92:22)\n at endReadableNT (internal:streams/readable:861:50)\n at processTicksAndRejections (native:7:39)\n at request (/$bunfs/root/claude:48:2147)\n at processTicksAndRejections (native:7:39)","timestamp":"2026-01-31T19:04:48.566Z"},{"error":"Error\n at Tb (/$bunfs/root/claude:41:1143)\n at <anonymous> (/$bunfs/root/claude:46:10080)\n at emit (node:events:92:22)\n at endReadableNT (internal:streams/readable:861:50)\n at processTicksAndRejections (native:7:39)\n at request (/$bunfs/root/claude:48:2147)\n at processTicksAndRejections (native:7:39)","timestamp":"2026-01-31T19:04:48.631Z"},{"error":"Error: Request was aborted.\n at makeRequest (/$bunfs/root/claude:360:3940)\n at processTicksAndRejections (native:7:39)","timestamp":"2026-01-31T19:08:09.898Z"}]This issue has 4 comments on GitHub. Read the full discussion on GitHub ↗