The Lab Notes

Anthropic

Claude Code logs every blocked or prompted tool call as one event

Claude Code 2.1.307 adds a claude_code.safety_event OpenTelemetry event for tool calls that a rule, hook, safety check or the sandbox stopped or sent back.

A blue and black gantry-style gate frame with yellow and light blue knobs and a pink segmented barrier arm across it, on an orange background flanked by columns of yellow and light blue half circles.

Claude Code now emits one OpenTelemetry event for every tool call that a permission rule, auto mode, a safety check, a hook or the sandbox stopped, prompted or sent back. The event is named claude_code.safety_event.

It arrived in Claude Code 2.1.307, according to the changelog at code.claude.com. The npm registry lists the release as published Oct. 21, 2026 at 20:47 UTC. Version 2.1.308 followed on Oct. 22. Its changelog entry reads “Bug fixes and reliability improvements.”

The Event Covers Five Mechanisms

The changelog gives claude_code.safety_event one line. A permission rule, auto mode, a safety check, a hook or the sandbox can each trigger it by interrupting a tool call.

Anthropic’s monitoring page already documents claude_code.tool_decision, a permission decision on a tool call, and claude_code.tool_result. It also documents events for permission mode changes. The page did not yet list safety_event when it was checked on Oct. 22.

Other Changes in 2.1.307

HTTP MCP tool calls were being sent twice when the connection closed mid-call. Claude Code now retries only read-only or idempotent tools.

A new /claude-api api-version command moves Claude API code to API version 2026-10-21.

Claude Code now retries an unparseable tool call up to twice before ending the turn with an error.

Our View

We think the useful detail is that one event name stands in for five different mechanisms. Admins and security teams that collect Claude Code telemetry can subscribe to claude_code.safety_event and receive every interrupted call. They get one stream to count, whichever mechanism caused the stop.

For developers, a call that gets stopped or sent back can show up in data that someone else reads. A hook a developer wrote or a sandbox limit they hit sits in the same stream as the admin’s permission rules.

The stream is useful for sorting stops by mechanism or tool only if Anthropic documents the event’s fields.