Bash tool blocked (exit 126 "Request interrupted by user") after 2.1.117 auto-writes skipAutoPermissionPrompt + defaultMode:auto

Resolved 💬 1 comment Opened Apr 22, 2026 by takara-tb Closed May 27, 2026

Environment

  • Claude Code: 2.1.117 (native installer)
  • Platform: Linux 6.6.87.2-microsoft-standard-WSL2
  • Happy wrapper: 1.1.4 (not the cause — reproducible without Happy hooks)

Summary

After upgrading to 2.1.117 (2026-04-22), all Bash tool invocations fail with
exit 126 / "Request interrupted by user for tool use", even for commands in
the allow-list and even echo test. Subagents show the same behavior.
Regenerating ~/.claude/settings.json from a clean template and restarting
Claude Code restores Bash.

Root cause (suspected)

2.1.117 auto-writes two keys into ~/.claude/settings.json at startup that
previous versions (2.1.114, 2.1.112) did not:

  • "defaultMode": "auto" (inside permissions)
  • "skipAutoPermissionPrompt": true (root)

With both set, permission judgements appear to skip the prompt and
auto-interrupt any Bash command that doesn't cleanly match an allow pattern —
including multi-line heredoc git commit even though Bash(git commit *) is
allowed, and commands like echo that would normally trigger a prompt.

Diff between a working settings.json (4/20, Claude Code 2.1.114) and the
broken one (4/22, 2.1.117):

+     "defaultMode": "auto"
+   "skipAutoPermissionPrompt": true

skipDangerousModePermissionPrompt alone (present since ~February) did not
cause the issue.

Reproduction

  1. Running 2.1.117.
  2. Allow 2.1.117 to write its auto-keys into ~/.claude/settings.json.
  3. In a session, any Bash call — including echo test — returns

exit 126 / "Request interrupted by user for tool use". No prompt is shown.

Workaround

Overwrite ~/.claude/settings.json with a version that does not contain
skipAutoPermissionPrompt / defaultMode: "auto" and restart Claude Code.
(Note: explicitly setting these to false in the template did not help in a
prior session — Claude Code rewrites them at startup.)

Expected behavior

Either (a) prompt the user when a Bash command doesn't match allow/deny, or
(b) cleanly fail with a clear error, not a silent
Request interrupted by user for tool use.

View original on GitHub ↗

This issue has 1 comment on GitHub. Read the full discussion on GitHub ↗