[Bug] Regression: --resume crashes with "g9H is not a function" in 2.1.120

Resolved 💬 3 comments Opened Apr 25, 2026 by jordan-of Closed Apr 27, 2026

Bug Description
claude --resume crashes with g9H is not a function — regression in 2.1.120 (works in 2.1.119)
Reporter
Jordan Dea-Mattson — jordan@ordinaryfolk.health
GitHub (OrdinaryFolk): @jordan-of (work)

Jordan Dea-Mattson — jdm@devopspm.com
GitHub (personal): @jordandm

Affiliation: OrdinaryFolk Health (Anthropic Team plan)

Repro
Claude Code version: 2.1.120 (broken)
Last known good: 2.1.119 (verified — same project, same --resume, launches cleanly via ~/.local/share/claude/versions/2.1.119 --resume)
OS: macOS — Darwin 25.4.0 arm64 (Apple Silicon)
Command run / state when triggered: cd <any-project-with-prior-session> && claude --resume
Also crashes via:
claude --resume <session-id> (explicit ID)
claude -c / claude --continue
claude then in-TUI /resume picker
claude --agent <name> --resume
Files involved: ~/.local/share/claude/versions/2.1.120 (the Bun-bundled standalone binary)
Reliability: fires every time, before the TUI renders
Expected
TUI loads, prior session messages restored, ready to continue. (This is what 2.1.119 does on the same project / same session.)

Actual
Immediate crash before TUI renders:

ERROR g9H is not a function. (In 'g9H(K)', 'g9H' is undefined)
/$bunfs/root/src/entrypoints/cli.js:9251:5663

  • <anonymous> (cli.js:9251:5663)
  • WC (cli.js:492:63749)
  • pj (cli.js:492:76948)
  • fT (cli.js:492:76827)
  • [pj/fT mutual recursion through scheduler tick]

Why it matters
Frequency: every --resume attempt on 2.1.120
Blast radius: blocks ALL session resumption on the current build — no way to pick up an in-flight conversation
Workaround: invoke previous build directly:
~/.local/share/claude/versions/2.1.119 --resume
The default symlink at ~/.local/bin/claude silently locks users into 2.1.120; anyone whose 2.1.119 binary has been pruned has no recovery path.
Hypothesized fix
At cli.js:9251 the resume useEffect:

useEffect(() => {
if (K && K.length > 0)
HP_(K, K8()),
hY8({...}),
tC8(K),
UQ(K),
sYH.current.current = xz_(K, g8),
g9H(K) // <-- undefined when FXK is disabled
}, []);
g9H = onSessionRestored is destructured from FXK({ enabled: S, ... }) where S = useMemo(() => !1, []) is hardcoded false. When enabled is false, FXK returns nothing for onSessionRestored → g9H is undefined → calling it crashes.

Likely 2.1.120 stubbed off a remote-session feature flag (enabled: S forced false) without updating the resume path to either:

guard the call (g9H?.(K)), or
get the callback from a hook that's still live.

Environment Info

  • Platform: darwin
  • Terminal: ghostty
  • Version: 2.1.117
  • Feedback ID: 124cf4a1-020f-4dfe-80f5-dcaec671dc38

Errors

[{"error":"Error: NON-FATAL: Lock acquisition failed for /Users/jordan_of/.local/share/claude/versions/2.1.117 (expected in multi-process scenarios)\n    at fn_ (/$bunfs/root/src/entrypoints/cli.js:2754:2177)\n    at H98 (/$bunfs/root/src/entrypoints/cli.js:2754:1257)\n    at processTicksAndRejections (native:7:39)","timestamp":"2026-04-22T12:47:30.024Z"},{"error":"Error: Plugin MCP server error - mcp-config-invalid: MCP server github invalid: Missing environment variables: GITHUB_PERSONAL_ACCESS_TOKEN\n    at aJH (/$bunfs/root/src/entrypoints/cli.js:2754:30499)\n    at processTicksAndRejections (native:7:39)","timestamp":"2026-04-22T12:47:30.047Z"},{"error":"Error: Plugin MCP server error - mcp-config-invalid: MCP server github invalid: Missing environment variables: GITHUB_PERSONAL_ACCESS_TOKEN\n    at aJH (/$bunfs/root/src/entrypoints/cli.js:2754:30499)\n    at async G (/$bunfs/root/src/entrypoints/cli.js:6151:11021)\n    at processTicksAndRejections (native:7:39)","timestamp":"2026-04-22T12:47:33.906Z"},{"error":"Error: Plugin MCP server error - mcp-config-invalid: MCP server github invalid: Missing environment variables: GITHUB_PERSONAL_ACCESS_TOKEN\n    at aJH (/$bunfs/root/src/entrypoints/cli.js:2754:30499)\n    at async L (/$bunfs/root/src/entrypoints/cli.js:6151:11827)\n    at processTicksAndRejections (native:7:39)","timestamp":"2026-04-22T12:47:33.906Z"},{"error":"Error: EISDIR: illegal operation on a directory, read '/Users/jordan_of/code/monofolk/.claude/worktrees/of-mobile-web/apps/of-mobile-web-testbed'\n    at J1H (/$bunfs/root/src/entrypoints/cli.js:1696:144)\n    at processTicksAndRejections (native:7:39)","timestamp":"2026-04-22T13:37:50.864Z"},{"error":"Error: EISDIR: illegal operation on a directory, read '/Users/jordan_of/code/monofolk/.claude/worktrees/of-mobile-web/apps/of-mobile-web-testbed'\n    at J1H (/$bunfs/root/src/entrypoints/cli.js:1696:144)\n    at processTicksAndRejections (native:7:39)","timestamp":"2026-04-22T13:37:54.269Z"},{"error":"Error: File does not exist. Note: your current working directory is /Users/jordan_of/code/monofolk.\n    at call (/$bunfs/root/src/entrypoints/cli.js:4746:7634)\n    at processTicksAndRejections (native:7:39)","timestamp":"2026-04-22T13:…

Note: Content was truncated.

View original on GitHub ↗

This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗