← Claude Code Hub
✦ Tip #235 Oct 20, 2026

"Unrecoverable interface error" in Claude Code: ten causes, one update

"Unrecoverable interface error" in Claude Code ends the session on the spot, but nothing is lost. Ten known causes, fixed between 2.1.275 and 2.1.289, and what to do when --resume itself hits it again.

Unrecoverable interface error in Claude Code: the message the session exits with, a timeline of the ten fixes between 2.1.275 and 2.1.289, and the way out: claude --resume, claude update and /tui if the fullscreen start failed

TL;DR Get the conversation back with claude --resume in the same directory, then update with claude update to 2.1.289 or later: that's where the ten fixes are. If the message mentions the fullscreen renderer, /tui tells you which renderer your next session starts in.

"Claude Code exited after an unrecoverable interface error" is the message Claude Code prints when its terminal interface throws an error it can't recover from. Not the API, not the model: the code that draws the screen, in either renderer. The session ends right there, with the process exiting with code 1, but the conversation was already written to disk. Between September 17 and October 3, 2026, the changelog fixed ten separate causes of this one message.

The full text, as Anthropic documents it. The second sentence only appears when the error hit while the fullscreen renderer was starting:

Claude Code exited after an unrecoverable interface error (<error>). It happened while the fullscreen renderer was starting, so the next launch will use the classic renderer (CLAUDE_CODE_DISABLE_ALTERNATE_SCREEN=1 forces that any time).

What sits inside the parentheses is the internal JavaScript error that broke rendering. I read this in the 2.1.305 code: the interface loop runs inside a try, and when an exception escapes it, Claude Code prints this message with the error's message, logs it as an unhandled_rejection and exits with code 1. That's why, in VS Code or the Agent SDK, what you usually see from the outside is Claude Code process exited with code 1: the real message is in Claude Code's own output. Before 2.1.236 there wasn't even that: the session vanished without printing anything.

Ten causes, ten versions

One sentence for failures that have nothing to do with each other. From the changelog:

Version What triggered it Renderer
2.1.275 Typing fast or holding a key with the / command dropdown open Fullscreen
2.1.277 A prompt holding terminal color codes, such as one recalled from history or loaded from the external editor Both
2.1.277 Slow or heavily loaded machines, when the first spinner appeared Both
2.1.277 Resuming a session whose transcript holds a stop hook summary without a well-formed hook list Both
2.1.280 Long-running sessions with a damaged cached message list (it is now rebuilt) Fullscreen
2.1.281 While Claude Code was retrying an API request Both
2.1.287 Slow or busy machines, with a scroll key held down in a long conversation Fullscreen
2.1.288 Opening the background tasks dialog while a plugin or mod showed rows above the prompt Fullscreen
2.1.289 A value written by a mod's ui.render hook made a row throw while being drawn Both
2.1.289 A plugin region with no height that kept growing Both

Four of the ten belong to the fullscreen renderer, the default for anyone who first used Claude Code on or after May 6, 2026, and still a research preview. Two involve slow machines, one what you paste into the prompt, and one resuming: that last one is the one that matters in step 3.

When the message mentions the fullscreen renderer

If the second sentence is there, the failure came before fullscreen finished starting. For Claude Code, a fullscreen session has started successfully once it draws its first frame and then either stays up for ten seconds or you close it with /exit, Ctrl+C or Ctrl+D. If it never gets there, your next session starts in the classic renderer and says so in one line:

  • After one failure: Claude Code's fullscreen renderer didn't finish starting last time on this machine. The session after that tries fullscreen again.
  • After two failures: Claude Code's fullscreen renderer has repeatedly failed to start on this machine. It stays on classic until you update or run /tui fullscreen, and stops saying so.

The count is per Claude Code version, and one successful fullscreen start resets it. Sessions launched with CLAUDE_CODE_NO_FLICKER=1 don't count: that variable forces fullscreen even after a failure. To check whether you're on classic for this reason, type /tui with no argument: the Current renderer: line carries the reason in parentheses. This is how it reads, assembled from the strings in the 2.1.305 code:

Current renderer: default (a fullscreen launch on this machine didn't finish starting last time; /tui fullscreen retries)

How to get out

1. Get the conversation back

claude --resume

In the same directory, it opens the session picker; claude --continue reopens the latest one without asking. Claude Code appends every turn to the transcript as it happens, so everything before the exit is there. What can be missing is the half-finished last turn: 2.1.286 fixed resumed sessions losing every turn after a batch of parallel tool calls when the earlier session had died on a failure, and 2.1.300 fixed the first entry written after resuming being lost when the failure had cut the transcript's last line short.

2. Update

claude --version
claude update

Below 2.1.289 you're missing at least one of the ten fixes; below 2.1.236, the message too. If claude update doesn't move you to a new version because you installed with Homebrew or npm, how to update Claude Code has the command for each case.

3. If --resume itself hits the error again

One of the ten causes lives in the saved transcript and comes back every time you load it: the malformed stop hook summary that 2.1.277 fixed. Two neighboring fixes go the same way, although the changelog doesn't tie them to this message: a system message or a memory-saved notice without its file list (2.1.280) and a compaction marker or a loop entry with missing fields (2.1.285) made resuming fail. Update first and resume again: newer versions tolerate those entries. If it still dies on a current version, the transcript sits at ~/.claude/projects/<project>/<id>.jsonl, in plain text: rename it, start a clean session and ask Claude to read whatever you need to recover from that file.

4. If the failure was the fullscreen start

Pick the renderer yourself instead of leaving it to the counter: /tui default saves classic without relaunching, /tui fullscreen tries again. To force classic for a single session, without touching the setting:

CLAUDE_CODE_DISABLE_ALTERNATE_SCREEN=1 claude

If the machine is what's running out of steam (two of the ten causes are slow or loaded computers), the fix list for when Claude Code hangs or eats your RAM starts with /compact and --safe-mode.

I haven't triggered the failure in a real session: the ten causes come from the changelog, and the message's behavior from the docs and the 2.1.305 code.

Official docs: Error reference · Fullscreen rendering, failed start

Free guide

The 51 essentials, as a guide.

One page per tip. Five chapters. What I actually use daily in production. No theory, no fluff.

  • I. Getting started 10 tips
  • II. Awareness 3 tips
  • III. Mastery 22 tips
  • IV. Autonomy 10 tips
  • V. Comparison 6 tips
Are you a professional Web developer?

You'll receive the guide by email · You join the Gravitas newsletter · Unsubscribe anytime

of 51
#

Wmedia · 51 Tips
Free guide · 51 tips · 5 chapters

The 51 essentials, as a guide.

Are you a professional Web developer? · Unsubscribe anytime
Workshop for teams

Multiply your team's output without sacrificing quality: a 6 to 8 hour AI First workshop, online, on the Claude platform.

See the workshop

Want the 51 Claude Code essentials as a guide?