Also seeing this on Windows 11 with T3 Code desktop 0.1.2 and Claude Code 2.1.310 (native install), in a Full access Claude thread.
Setup was a PermissionRequest hook (matcher Bash|PowerShell) that allows only when permission_mode is bypassPermissions. The command was a multi-line Bash script whose rm -rf $OUT/* trips the dangerousRemoval safety check.
What the logs show:
- The provider event log records the tool result with
permission_decision: {"decision":"accept","source":"hook","reason_type":"hook"}, and the command ran. server.trace.ndjsonstill has anawaitClaudeApprovalDecisionspan for it, lasting ~116 ms (129 ms on a second repro). That matches the CLI sendingcan_use_tooland withdrawing it once the hook answers.- The approval card stayed up in the UI afterwards.
I also tried adding a PreToolUse hook that returns permissionDecision: "allow" in bypass mode. It doesn't avoid the request: the safety check still sends can_use_tool to T3, so the card still appears. Closing withdrawn requests on the T3 side, as you proposed, looks like the only fix.