CLAUDE CODE REVIEW FIELD NOTE · 5 MIN READ

When Claude Code JSONL is not an approval record.

A saved transcript can tell you that a question was asked and an answer was recorded. It may not establish all the explanatory text the person saw before answering. Keep those claims separate before treating the answer as authority for a consequential action.

Published 5 October 2026 · Review method, not a claim that every Claude Code session has this gap

The narrow failure mode

In a public Claude Code issue report, a user describes assistant text accompanying an AskUserQuestion tool call that appeared in the interactive conversation but was absent from the saved session JSONL. That is a reported case, not proof that all transcripts omit approval context. A separate auditability discussion raises broader concerns about treating session JSONL as a complete account of dynamic prompts and state. The safe conclusion is limited: if the context matters and the supplied record does not contain it, the reviewer must mark it unknown.

THE APPROVAL BOUNDARY

A recorded answer is evidence that an answer was recorded. It is not, by itself, evidence of the full explanation shown, the person's understanding, or approval of a later effect.

Separate three questions

  1. What is in the file? Preserve the exact local transcript copy, relevant message and tool identifiers, question options, answer, and time ordering. Do not silently fill missing text from the agent's later summary.
  2. What did the person see? Look for an independently retained UI capture or approval record. If none exists, say unknown; do not infer the displayed explanation from the JSONL alone.
  3. What was authorised and what happened? Compare the bounded approval scope with the subsequent tool action and a read-back of the target. A successful tool result is not the same as verified downstream effect.

Make the gap visible in a handback

This synthetic example uses no customer data and does not assert that the reported issue occurred in your run:

OBSERVED    supplied JSONL contains an AskUserQuestion call and answer
OBSERVED    later tool result reports a successful change
UNKNOWN     explanatory assistant text shown beside the prompt
UNKNOWN     whether the answer covered this exact target and scope
UNKNOWN     target state after the reported change
NEEDS HUMAN recover the original approval context or ask again;
            then read back the canonical target before accepting the change

If the original context cannot be recovered, avoid describing the event as “approved.” Record the answer as observed, the scope as unknown, and the next decision as pending. A new approval is safer than retroactively upgrading an ambiguous transcript.

Minimal review workflow

  • Work from a local copy of the session JSONL. Keep the original protected; make only a redacted, purpose-limited excerpt for sharing.
  • Locate the question call, its result or answer, surrounding assistant messages, and the subsequent action. Note gaps in sequence or unsupported envelope types.
  • Attach independent approval context only if it actually exists. Do not treat a transcript omission as proof that no explanation was shown.
  • For consequential changes, verify the outcome against the canonical target and request fresh human approval when the original scope is unclear.

Traceplain can parse a compatible saved session copy in the browser and produce an evidence-labelled handback. It does not retrieve missing UI text, certify consent, or reconstruct omitted events. Imported records stay on the device.

Source and scope