Interactive mode crashes with "zsh: suspended (signal)" on macOS 26.2

Status Closed — not planned
Reported on v2.1.29
Maintainer reply None cached
Activity 13 comments · opened Feb 1, 2026 · closed Mar 12, 2026

Preflight Checklist

  • [x] I have searched existing issues and this hasn't been reported yet
  • [x] This is a single bug report (please file separate reports for different bugs)
  • [x] I am using the latest version of Claude Code

What's Wrong?

Environment

  • macOS: 26.2 (Build 25C56)
  • Claude Code: 2.1.29 (also tested 2.1.17)
  • Node.js: Tested v18.20.8 and v20.19.0
  • Terminals: Warp, Terminal.app (both crash)
  • Shell: zsh

Description

Interactive mode crashes with zsh: suspended (signal) within seconds of launching. The UI renders duplicate frames before crashing. Non-interactive mode (--print) works fine.

Steps to Reproduce

  1. Fresh install: curl -fsSL https://claude.ai/install.sh | bash
  2. Run claude
  3. Type anything
  4. Observe duplicate rendering and crash

Debug Info

  • Debug log shows: High write ratio: blit=0, write=1617 (100.0% writes)
  • System logs show excessive nw_path_libinfo_path_check network calls
  • Crash occurs regardless of terminal width
  • Crash occurs with TERM=dumb
  • claude --print "hello" works correctly

What I've Tried

  • Fresh install (wiped ~/.claude, ~/.claude.json, all backups)
  • Multiple Claude Code versions (2.1.17, 2.1.29)
  • Multiple Node versions (18, 20)
  • Multiple terminals (Warp, Terminal.app)
  • Wider terminal window
  • TERM=dumb
  • Removed all MCP servers

Workaround

claude --print mode works, only interactive mode is broken.

What Should Happen?

Claude Code should launch and stay responsive without crashing. The UI should render cleanly without duplicate frames.

Error Messages/Logs

Steps to Reproduce

  1. Install Claude Code: curl -fsSL https://claude.ai/install.sh | bash
  2. Run claude in any terminal
  3. Type any text and press Enter
  4. Observe: UI duplicates frames multiple times, then crashes with "zsh: suspended (signal)"

Claude Model

Opus

Is this a regression?

No, this never worked

Last Working Version

_No response_

Claude Code Version

2.1.29

Platform

Anthropic API

Operating System

macOS

Terminal/Shell

Warp

Additional Information

The --print flag works correctly, only interactive mode is broken. This suggests the issue is in the terminal UI renderer (Ink/React), not the API connection.

View original on GitHub ↗

13 Comments

github-actions[bot] · 7 months ago

Found 3 possible duplicate issues:

  1. https://github.com/anthropics/claude-code/issues/21567
  2. https://github.com/anthropics/claude-code/issues/21806
  3. https://github.com/anthropics/claude-code/issues/22196

This issue will be automatically closed as a duplicate in 3 days.

  • If your issue is a duplicate, please close it and 👍 the existing issue instead
  • To prevent auto-closure, add a comment or 👎 this comment

🤖 Generated with Claude Code

resatu · 7 months ago

No this is a specific bug for macOS 26.2 update - that happened afterwards

https://developer.apple.com/documentation/Xcode-Release-Notes/xcode-26_2-release-notes

resatu · 6 months ago

it started working - dupes are gone

resatu · 6 months ago

i had it again today.

resatu · 6 months ago
resatu · 6 months ago

Update from today (2026-02-11): still happening on Claude Code v2.1.39, macOS 26.2 (25C56), zsh.

It's now showing both:

  • [1] + suspended (signal)
  • [1] + suspended (tty input)

Interactive TUI repeatedly redraws the splash + prompt block (same frame over and over), then suspends. --print mode is still fine.

I verified this is not MCP setup and reproduced after isolating startup variables:

  1. Disabled all user plugins
  2. Uninstalled failing plugins (rust-analyzer-lsp, graphyn-core)
  3. Launched with --disable-slash-commands --no-chrome
  4. Launched with strict empty MCP config (--strict-mcp-config --mcp-config /tmp/empty-mcp.json)

Even with all of that, the TUI still re-renders the same initial frame in a loop and suspends.

Also seeing recurring renderer diagnostics in debug logs consistent with prior reports, e.g. repeated high write ratios / write-only frames in earlier sessions (blit=0, write=...).

So at least in my environment, this reproduces even after removing plugin + MCP factors; looks like a core TUI/job-control interaction on macOS 26.2.

resatu · 6 months ago

Additional datapoint from a fresh repro in v2.1.39 (debug enabled):

  • During one redraw-loop window, debug log shows an auth event storm: 127 OAuth token check starting events in the same second (2026-02-11T10:47:44Z).
  • This was observed after disabling/removing plugin/MCP variables as noted above.

I can share the full debug file if you want a direct attachment path/format.

resatu · 6 months ago

<img width="774" height="867" alt="Image" src="https://github.com/user-attachments/assets/9dac0052-19e2-4758-bee1-44f04c464d9b" />

this is how it looks like

resatu · 6 months ago

Fresh datapoint: full wipe + reinstall still reproduces on macOS 26.2 with v2.1.39.

What I did:

  • Removed ~/.claude, ~/.claude.json, ~/.local/share/claude, ~/.local/bin/claude (clean reinstall state)
  • Reinstalled via official installer (curl -fsSL https://claude.ai/install.sh | bash)
  • No plugins installed (clean default)

Observed behavior in first launch:
1) Theme/onboarding screens repeatedly redraw/restart
2) Login flow completes successfully
3) Reaches normal prompt (Try "how do I log an error?")
4) Header/prompt redraw loop appears again
5) process stops with zsh: suspended (signal)

So this is reproducible after a true clean reinstall and before custom plugin/MCP restoration.

resatu · 6 months ago

Possible repro clue from environment diff:

On affected machine session, shell env includes:

  • TERM_PROGRAM=WarpTerminal
  • LANG=C.UTF-8
  • LC_ALL=C.UTF-8
  • NO_COLOR=1

I can still repro the redraw/suspend path in this environment.

Suggest checking whether the TUI renderer behavior changes with locale/color env normalization (e.g. LANG/LC_ALL=en_US.UTF-8, NO_COLOR unset), since this machine differs from my other Mac where issue does not occur.

resatu · 6 months ago

Latest update (workaround found on affected Mac):

A shell wrapper that launches interactive Claude inside a nested PTY (/usr/bin/script) appears to stop the recurring suspended (signal) / suspended (tty input) behavior in my Warp + macOS 26.2 environment.

Working wrapper pattern:

  • normalize env (LANG/LC_ALL=en_US.UTF-8, unset NO_COLOR)
  • for interactive runs, execute Claude via: script -q /dev/null ~/.local/bin/claude ...

Non-interactive modes (--print, --version, etc.) still run directly.

This looks like a TTY/job-control interaction specific to this environment, not install corruption (clean reinstall previously reproduced the issue).

github-actions[bot] · 5 months ago

Closing for now — inactive for too long. Please open a new issue if this is still relevant.

github-actions[bot] · 5 months ago

This issue has been automatically locked since it was closed and has not had any activity for 7 days. If you're experiencing a similar issue, please file a new issue and reference this one if it's relevant.