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.248 Home All releases olderv2.1.247 v2.1.250newer
Claude Code v2.1.248

Telemetry events can be signed with a device key

Not switched on
Useful2 Signal5
Telemetry Notable

Analytics events can be signed with a device key tying them to your machine.

Device attestation signing has no flag, loads dynamically, and needs a server-registered key.

What

Claude Code has new code to attach a device attestation to the analytics envelopes it sends, so an event can be tied to a real device and not just an account. The event body is canonicalized to a fixed JSON form, hashed and signed, and the signature travels with the event. Nothing in this build turns it on: there is no flag and no settings key, the signing module is loaded at runtime and the path is inert whenever that load fails, and even with the module present signing only happens if the account has a registered device key, which is decided server-side.

Details
  • The canonicalized body is hashed with sha256 and signed with ECDSA in ieee-p1363 form; the envelope carries kid, signature and jcs_lib.
  • Payload keys are normalised and stray lone-surrogate escapes are scrubbed before signing; the canonicalizer refuses values that have no JSON form and non-finite numbers rather than emitting them.
  • Ids containing a NUL byte skip signing entirely.
  • Skips are recorded under the feature name client_event_signer with a reason: no_device_key, load_failed for a key that is present but unreadable, or bound_elsewhere for a key belonging to a different device.
  • A failed module load emits its own telemetry with a module_load_failed cause plus diagnostic output reading [clientEventSigner] the signer module did not load: .
  • Any signing failure falls back to sending the plain unsigned payload, so telemetry is never blocked by this path.
  • None of this code or these strings exist in v2.1.247.
Evidence

anthropic.ccr.client_event.v1, [clientEventSigner] the signer module did not load:

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

See this entry in the whole of v2.1.248 →