All Bash tool calls execute asynchronously with no opt-out (v2.1.x)
Description
Starting with Claude Code 2.1.x, all Bash tool calls execute asynchronously (background mode) regardless of whether run_in_background is set. There is no way to opt out of this behavior via settings.
Environment
- Version: 2.1.101
- OS: Linux (Ubuntu, ThinkPad)
- Install method: npm via Linuxbrew Node (
/home/linuxbrew/.linuxbrew/bin/npm)
Behavior
Every Bash tool call returns a background task ID instead of blocking for output:
Command running in background with ID: bXXXXX. Output is being written to: /tmp/claude-1000/.../tasks/bXXXXX.output
This happens even for trivial commands like echo "test" && date where run_in_background was NOT requested.
Impact
- Massive latency: Simple commands like
git reset HEAD~1(which takes milliseconds) appeared to run for 3+ minutes in the task runner before the completion notification arrived. - Broken workflow: Results arrive as async notifications requiring a separate file read, instead of inline. This makes iterative shell work very slow.
- Cannot be disabled:
remote-settings.jsonrepeatedly resets to{"channelsEnabled": true}on every startup, overriding any local edit.
What was tried
- Setting
channelsEnabled: falsein~/.claude/settings.json— no effect - Editing
remote-settings.jsontofalse— reverts on restart - Making
remote-settings.jsonread-only — async behavior persists regardless - Disabling
voiceEnabled— no effect - Downgrading to 2.1.98 via npm — auto-updater immediately reverts to 2.1.101
- Uninstalling JetBrains PyCharm Claude plugin — no effect
Expected behavior
Bash tool calls without run_in_background: true should block and return output inline, as in Claude Code 2.0.x.
Notes
The remote-settings.json file (at ~/.claude/remote-settings.json) appears to be written by the server/infrastructure layer on every startup and cannot be overridden by local user settings. The channelsEnabled schema description says "Default off. Set true to allow" — but it is being forced on without user consent.
This issue has 2 comments on GitHub. Read the full discussion on GitHub ↗