Claude Code 2.1.286 resume recovery: verify parallel-tool transcripts before continuing

Quick answer

Claude Code 2.1.286 fixes a failure where --resume or --continue could lose every turn after a batch of parallel tool calls when the earlier process crashed or was killed. Upgrade before relying on recovery, but do not treat a successful resume as proof that interrupted tools did nothing. Verify transcript continuity, reconcile external side effects, restore launch-only configuration, and continue from a fork when the original session is evidence you still need.

Who this is for

This guide is for developers who use Claude Code for long sessions, parallel tools, headless automation, or workflows that write files, call APIs, deploy, publish, or spend money.

If your main concern is governing which model versions Claude Code may use, see the exact model allowlist checklist. This article covers a different task: recovering a crashed session without losing context or replaying uncertain work.

What changed and what did not

Anthropic released Claude Code 2.1.286 on September 30, 2026. Its notes say that claude --resume and --continue now preserve turns after a parallel-tool batch when the previous session crashed or was killed. The release also fixes resumed-session API 400 errors caused by tools or hooks returning non-text JSON values, and adds a one-time fallback to the previous model in the same tier when the configured model is refused.

The session documentation still draws an important boundary. A tool running when the process ended is recorded as cut off; it does not finish or automatically run again on resume. Claude must check whether it took effect before retrying. Transcript recovery and side-effect recovery are separate problems.

Five checks before you continue

Check Evidence to capture Failure response
Transcript continuity Last user prompt, assistant turn, tool-call IDs, and results are present Stop and preserve the transcript
Interrupted-call state Every tool call is completed, failed, or explicitly cut off Do not replay automatically
External side effects Git, filesystem, API, deployment, payment, or post state is independently checked Reconcile with the target system
Launch contract Model, MCP config, settings, plugins, fallback chain, and added directories match the intended run Relaunch with the missing flags
Recovery destination Original session or an explicit fork is selected Fork when evidence must remain immutable

A seven-step recovery workflow

1. Upgrade and record the exact version

Confirm Claude Code is 2.1.286 or later. Record the version, session ID, repository commit, working directory, and whether the process crashed, was killed, or lost its connection. A vague “latest” receipt is not reproducible.

2. Freeze consequential automation

Pause deployers, publishers, payment calls, and destructive scripts before opening the session. Recovery is an investigation until external state is known. Do not let startup hooks or schedulers replay the same operation.

3. Preserve the original transcript

Preserve the transcript metadata or export a readable record. Use claude --resume <session-id> --fork-session to inspect or continue without extending the original history. Resuming one session from two terminals without a fork can interleave messages.

4. Check transcript invariants

Compare the last known prompt, parallel tool-call IDs, tool results, and the first recovered turn. A batch passes only when completed results remain paired with their calls and interrupted calls are visible as interrupted—not silently absent or represented as successful.

5. Reconcile side effects outside Claude Code

Inspect the real target: git status, file hashes, CI or deployment IDs, API idempotency keys, database rows, post URLs, or payment receipts. If state is unknown, query by the original idempotency key or request ID. Never infer completion from the resumed narrative.

6. Restore launch-only configuration

Claude Code re-reads normal settings files, but the session docs say several launch flags are not restored automatically, including --mcp-config, --settings, --plugin-dir, --fallback-model, and --add-dir. Pass them again. Also verify the resolved model: retired, disallowed, explicitly overridden, or provider-specific models may not be restored.

7. Continue with one reversible canary

Ask the recovered session to perform a read-only check first. Then run one idempotent write with a unique marker. Continue the production task only after the transcript, real state, permissions, model, and tool configuration agree.

Recovery receipt template

claude_code_version: 2.1.286
session_id: session_abc
recovery_mode: fork
original_transcript_preserved: true
last_verified_prompt: "run unit tests and summarize failures"
parallel_calls:
  completed: [tool_1, tool_2]
  cut_off: [tool_3]
external_reconciliation:
  git_head: abc123
  deployment_id: null
  duplicate_side_effect: false
launch_contract:
  model: claude-sonnet-5-5
  fallback_model: claude-sonnet-5
  mcp_config_restored: true
canary: read_only_passed
decision: continue

This receipt makes the decision reviewable. It also separates “history restored” from “external action verified.”

Canary matrix

Test six cases: a clean exit, a kill before tools, a kill during one tool, a kill during a mixed parallel batch, a non-text tool or hook result, and a configured-model refusal. Add one idempotent external write. Pass only when completed turns remain, cut-off calls stay explicit, retries do not duplicate the write, and fallback is recorded.

Common mistakes

Make your Mac notch useful with SuperNotch—more than 20 native tools for music, clipboard, focus, screenshots, system controls, and more.

FAQ

Should I resume the original session or fork it?

Fork when the original transcript is incident evidence or when another terminal might still use it. Resume in place only after you know there is one writer and the history is safe to extend.

Does Claude Code retry an interrupted tool call automatically?

The session documentation says a tool that was running when the process ended does not finish or run again automatically. Verify its real effect before deciding whether to retry.

Does a resumed session restore every launch flag?

No. Re-pass launch-only options such as MCP config, settings, plugin directories, fallback models, and added directories.

Is model fallback proof that the same behavior will continue?

No. Record the resolved model and context-window change, then rerun a canary. A fallback is availability recovery, not behavioral equivalence.

Sources