[BUG] Task tools (TaskCreate/TaskUpdate/TaskList/TaskGet) disabled in VSCode extension due to isTTY check — accessibility barrier
Summary
TaskCreate, TaskUpdate, TaskList, and TaskGet are compiled into the Claude Code binary and work perfectly in the CLI terminal. They are silently disabled in the VSCode extension because the binary checks process.stdout.isTTY, which is false when the extension communicates through pipes.
The env var CLAUDE_CODE_ENABLE_TASKS=1 does not override this in VSCode. Despite the sG() gate function accepting it, the tools do not appear in VSCode sessions even with the var set.
This is not a feature request. This is a bug. The tools exist in the binary. The documentation references them. They don't work.
Root Cause (verified by decompiling the binary)
// From the v2.1.34 binary (strings extraction)
function sG() {
if (LE(process.env.CLAUDE_CODE_ENABLE_TASKS)) return false; // explicitly disabled
if (A$(process.env.CLAUDE_CODE_ENABLE_TASKS)) return true; // explicitly enabled
if (eI()) return false; // non-interactive → disabled
return true; // interactive → enabled
}
function eI() { return !k$.isInteractive }
// isInteractive is set based on:
I = $ || A || L || !process.stdout.isTTY;
bS$(!I) // setIsInteractive(!I)
VSCode extension communicates with the binary through pipes → process.stdout.isTTY is false → isInteractive is false → task tools disabled.
The CLAUDE_CODE_ENABLE_TASKS env var should override this (the A$ function accepts "1", "true", "yes", "on"), but in practice the tools still don't appear in VSCode even with it set. Something else is stripping them.
Proof: Same Binary, Different Tools
| Environment | Binary Version | TaskCreate | TaskList | TaskUpdate | TaskGet |
|-------------|---------------|------------|----------|------------|---------|
| CLI terminal (claude) | 2.1.34 | WORKS | WORKS | WORKS | WORKS |
| CLI headless (claude -p + env var) | 2.1.34 | WORKS | WORKS | WORKS | WORKS |
| VSCode extension | 2.1.34 | MISSING | MISSING | MISSING | MISSING |
| VSCode extension + CLAUDE_CODE_ENABLE_TASKS=1 | 2.1.34 | MISSING | MISSING | MISSING | MISSING |
| VSCode spawned agents (Task tool, in-process) | 2.1.34 | MISSING | MISSING | MISSING | MISSING |
Full 16/16 test suite passes in CLI: task creation, dependency gating (blockedBy), status updates, TaskGet, TeamCreate, agent spawning, agent-to-lead messaging, shutdown, TeamDelete. Everything works. None of it works in VSCode.
The Documentation Problem
The TeamCreate tool description — which ships in the VSCode extension's system prompt — says:
"2. Create tasks using the Task tools (TaskCreate, TaskList, etc.) — they automatically use the team's task list" "4. Assign tasks using TaskUpdate with owner to give tasks to idle teammates"
These instructions are presented to VSCode users who cannot follow them. There is no caveat, no warning, no "CLI only" note. The documentation describes tools the user cannot access.
Impact
This isn't just a developer inconvenience. VSCode is an accessibility requirement for some users. Terminal-based workflows are not viable for users with visual impairments who depend on VSCode's accessibility features — screen readers, high contrast themes, font scaling, UI customization.
Telling these users to "use the terminal instead" is telling them the agent teams feature doesn't exist for them. The swarm orchestration system — TeamCreate, task board coordination, dependency gating — is a CLI-only feature disguised as a general feature.
A user spent 6+ hours debugging what appeared to be a hallucinated architecture, writing a post-mortem blaming themselves for "untested assumptions," before discovering through binary decompilation that the tools were always there — just disabled by a TTY check.
Environment
- Claude Code: v2.1.34
- Platform: Linux (WSL2)
- VSCode extension: anthropic.claude-code-2.1.34-linux-x64
CLAUDE_CODE_ENABLE_TASKS: set to "1" in ~/.claude/settings.jsonCLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS: set to "1"
Expected Behavior
Task tools should be available in the VSCode extension. The CLAUDE_CODE_ENABLE_TASKS env var should work as documented by Anthropic engineers (see #20463, #20424). The VSCode extension should either:
- Set
isInteractive = true(it's an interactive session — a human is using it), or - Actually respect the
CLAUDE_CODE_ENABLE_TASKSoverride, or - Remove task tool references from the TeamCreate documentation served to VSCode users
Option 1 is the correct fix.
Related Issues
- #21901 — Feature request for task tools in VSCode (filed Jan 30, 0 comments, no response)
- #20463 — Tasks not available in headless mode (closed, Anthropic engineer confirmed env var fix — but it doesn't work in VSCode)
- #20424 — Same issue, same engineer response
This issue has 9 comments on GitHub. Read the full discussion on GitHub ↗