Source Intelligence

DisclaimerUnofficial, and not affiliated with Anthropic. Nearly all of this is read straight out of what ships: npm bundles, captured prompts, published docs. Anthropic's own notes go in verbatim, marked as theirs. The rest is my reading, and every entry carries the strings behind it. If one looks wrong, vote it down and say why.

All of v2.1.232 Home All releases olderv2.1.231 v2.1.233newer
Claude Code v2.1.232

Per-turn attribution key sent as tk, and tk is now a reserved metadata name

Use it now
Useful3 Signal3
Telemetry Notable

tk is now a reserved metadata name and stripped from your extra metadata or body.

CLAUDE_CODE_EXTRA_METADATACLAUDE_CODE_EXTRA_BODY
What

Remote-controlled sessions now attach a per-turn attribution key to API request metadata as tk, alongside device_id, session_id and parent_session_id. Because of that, tk has been added to the list of metadata names you cannot set yourself: anything you put under that name in CLAUDE_CODE_EXTRA_METADATA or CLAUDE_CODE_EXTRA_BODY is stripped before the request is sent.

Details
  • The full reserved set is ti, sb, he, uf, ap, tk; your object is filtered against it so the key cannot be spoofed.
  • The key is carried on queued user messages, propagated through agent contexts, and merged when queued prompts are combined, where the last keyed entry wins.
  • Only computed when the session is running remote-controlled (CLAUDE_CODE_REMOTE); omitted otherwise, and deliberately not set for cross-session inbound messages.
Evidence

kxS = new Set(["ti", "sb", "he", "uf", "ap", "tk"]);, turnAttributionKey, CLAUDE_CODE_EXTRA_BODY

Strings lifted out of the shipped bundle, so the claim above can be checked against them.

Related

Other releases about the same thing. Found by shared names or similar wording; neither means one caused the other.

See this entry in the whole of v2.1.232 →