Claude Code now tracks and stores whether a tool-call approval came from a hook, the host app, or a normal user prompt
What
When Claude Code approves a tool call, it now records how that approval happened. A new decidedBy value marks the decision as hook (an automated hook approved it), host_prompt (the surrounding application's permission prompt approved it), or prompt (the normal in-session approval prompt was used). This is captured through a new recordApprovedBy call, and the internal approval-tracking state gained a matching approvedBy field alongside its existing tracking of who the approval request was addressed to and whether it was settled.
Why
This gives Claude Code (and its telemetry) visibility into which mechanism actually granted permission for an action, which is useful for auditing and debugging approval flows, especially in setups that mix hooks, host-app prompts, and manual approval.