{"version":"2.1.317","anchor":"old-bash-guard-claude-code-refuses-commands-on-shells-too-o","canonical_anchor":"old-bash-guard-claude-code-refuses-commands-on-shells-too-o","heading":"Claude Code refuses commands on a bash too old to run them and points to CLAUDE_CODE_SHELL","tier":"notice","area":"Bash","scope":"individual","heads_up":true,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.317\/e\/old-bash-guard-claude-code-refuses-commands-on-shells-too-o","release_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.317","markdown":"### Claude Code refuses commands on a bash too old to run them and points to `CLAUDE_CODE_SHELL`\n\nWhen the shell's bash is too old to run a command reliably, Claude Code refuses it and suggests setting CLAUDE_CODE_SHELL to zsh or a newer bash\n\n**Unclear.** Which bash versions trigger the refusal, and whether it is switched on for everyone, is not stated.\n\n**What**\n\nClaude Code can now decline to run a command because the shell, the program that runs commands, is a version of bash that is too old to run it reliably. When that happens, Claude is told to rewrite the command more simply, without backticks or arrays.\n\nYou can avoid this by setting the environment variable `CLAUDE_CODE_SHELL` to the path of zsh or of a newer bash, then restarting Claude Code.\n\n**Why**\n\nOn machines with an old bash, such as the bash 3.2 that comes with macOS, a command that would have failed in a confusing way is now refused with a clear reason and a fix.\n\n- Area: Bash\n- Names: `CLAUDE_CODE_SHELL`\n- Tier: You'll notice\n- Useful: 3\/5\n- Signal: 2\/5\n- Scope: individual\n- Heads-up: yes"}