[BUG] Wrong command is reported in "don't ask again for" in "This command requires approval"

Resolved 💬 10 comments Opened Feb 21, 2026 by SivkovSavely Closed Mar 25, 2026

Preflight Checklist

  • [x] I have searched existing issues and this hasn't been reported yet
  • [x] This is a single bug report (please file separate reports for different bugs)
  • [x] I am using the latest version of Claude Code

What's Wrong?

When executing bash with a pipe, where the first pipe argument should be auto-allowed, but the second isn't, like this:

Bash command                                                                                                                                                                
                                                                                                                                                                             
   hyprctl clients -j | python3 -c "import sys,json; [print(f'at=({c[\"at\"][0]},{c[\"at\"][1]})') for c in json.loads(sys.stdin.read()) if 'popup' in c.get('title','')]"   
   Check popup position after manual move                                                                                                                                    
                                                               
 Do you want to proceed?
 ❯ 1. Yes                    
   2. Yes, and don’t ask again for: hyprctl clients:*
   3. No

 Esc to cancel · Tab to amend

It asks to allow hyprctl clients:*, even though hyprctl clients:* is allowed:

> \cat .claude/settings.local.json
{
  "permissions": {
    "allow": [
      "mcp__web-search-prime__webSearchPrime",
      "mcp__web-reader__webReader",
      "Bash(head:*)",
      "Bash(tail:*)",
      "Bash(tail *)",
      "Bash(flutter pub get)",
      "Bash(flutter build linux --release)",
      "Bash(grep:*)",
      "Bash(grep *)",
      "Bash(flutter build:*)",
      "Read(//home/username/.pub-cache/hosted/pub.dev/**)",
      "Bash(flutter clean)",
      "Bash(cmake *)",
      "Bash(dart analyze *)",
      "Bash(hyprctl clients:*)",
      "Bash(hyprctl monitors:*)"
    ]
  }
}

Python is not allowed, so the Bash tool call is probably blocked because of python, not because of hyprctl clients.

What Should Happen?

TUI should display the correct prompt:

 Bash command

   hyprctl clients -j | python3 -c "import sys,json; [print(f'at=({c[\"at\"][0]},{c[\"at\"][1]})') for c in json.loads(sys.stdin.read()) if 'popup' in
   c.get('title','')]"
   Check popup position after manual move

 Do you want to proceed?
 ❯ 1. Yes
   2. Yes, and don’t ask again for: python3:*
   3. No

 Esc to cancel · Tab to amend

Error Messages/Logs

Steps to Reproduce

  1. Start in a new project
  2. Ask it to run a piped command of your liking, where both parts will not be allowed
  3. Allow the first one
  4. Ask it to rerun this command
  5. The first command will still be there, even though it is allowed.

Claude Model

Opus

Is this a regression?

Yes, this worked in a previous version

Last Working Version

_No response_

Claude Code Version

2.1.50 (Claude Code)

Platform

Anthropic API

Operating System

Other Linux

Terminal/Shell

Other

Additional Information

OS: Arch Linux, EndeavourOS flavor, super custom but I don't think that it should matter.
Terminal: kitty
Default shell: zsh
Sorry if it's a dupe, I searched but couldn't find the similar issue.

View original on GitHub ↗

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