[BUG] Task tools (TaskCreate/TaskUpdate/TaskList/TaskGet) disabled in VSCode extension due to isTTY check — accessibility barrier

Resolved 💬 9 comments Opened Feb 7, 2026 by jayeshm33-bit Closed Apr 1, 2026

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 falseisInteractive 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.json
  • CLAUDE_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:

  1. Set isInteractive = true (it's an interactive session — a human is using it), or
  2. Actually respect the CLAUDE_CODE_ENABLE_TASKS override, or
  3. 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

View original on GitHub ↗

This issue has 9 comments on GitHub. Read the full discussion on GitHub ↗