[BUG] permissionDecisionReason not surfaced in the UI

Resolved 💬 3 comments Opened Oct 21, 2025 by asm89 Closed Oct 28, 2025

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?

claude does not show the permissionDecisionReason in the UI anymore. Instead it shows a generic message:

● Bash(find . -maxdepth 2 -type f -o -type d | head -50) timeout: 10s
  ⎿  PreToolUse:Bash hook returned blocking error
  ⎿  Error: Hook requested permission behavior: deny

What Should Happen?

It should show the permission decision reason like it did up until 2.0.14:

● Bash(find . -maxdepth 2) timeout: 30s
  ⎿  Error: Bash operation blocked by hook:
     - Directory tree is too large to be locally searched. Try with a more restricted path or use a different tool

Error Messages/Logs

This is the output of the hook:

> {"hookSpecificOutput":{"hookEventName":"PreToolUse","permissionDecision":"deny","permissionDecisionReason":"Some reason described here"}}

Steps to Reproduce

  1. Create a PreToolUse hook that outputs a deny with a permission reason. E.g.
{"hookSpecificOutput":{"hookEventName":"PreToolUse","permissionDecision":"deny","permissionDecisionReason":"Some reason described here"}}
  1. Make claude run a command.
  2. Note that the reason doesn't show in the UI.

Install claude 2.0.14 to see it worked up until then, but has been broken since.

Claude Model

None

Is this a regression?

Yes, this worked in a previous version

Last Working Version

2.0.14

Claude Code Version

2.0.24

Platform

AWS Bedrock

Operating System

Other Linux

Terminal/Shell

Other

Additional Information

_No response_

View original on GitHub ↗

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