[BUG] Interactive TUI mode hangs indefinitely on macOS — --print mode works fine (v2.1.81, Max plan)
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?
Bug Description
Claude Code interactive mode (TUI) hangs indefinitely on launch. The process starts (visible in terminal title bar as node · claude) but never renders any UI — no trust dialog follow-up, no login prompt, no input cursor. The terminal becomes completely unresponsive, including Ctrl+C.
Non-interactive modes work perfectly: --version, auth status, auth login (browser OAuth flow), and --print all execute and return immediately.
Environment
- Claude Code version: v2.1.81 (also reproduced on v2.1.52 downgrade)
- OS: macOS (Apple Silicon)
- Plan: Max (
subscriptionType: "max") - Auth: claude.ai (firstParty, not API key)
- Node.js: working (
node -e "console.log('ok')"returns immediately) - Terminal: macOS Terminal.app, window sizes tested: 80x24, 131x71, 182x55, 269x71
Steps to Reproduce
claude --version→ returns2.1.81 (Claude Code)immediately ✅claude auth status→ returns valid JSON withloggedIn: true,subscriptionType: "max"✅claude --print "hello"→ returns response immediately ✅claude→ process starts (title bar showsnode · claude), blank screen, no UI, completely unresponsive ❌TERM=dumb claude→ same hang ❌
Troubleshooting Already Attempted (ALL failed)
- Complete
~/.claude/directory reset (mv ~/.claude ~/.claude.bak) — fresh folder created, still hangs - Removed Claude Desktop MCP config (
claude_desktop_config.json) - Removed
~/.claude/plugins/directory - Emptied
settings.jsonandsettings.local.jsonto{} - Quit Claude Desktop app completely
killall -9 node/killall -9 Claudebetween every attempt- Downgraded to v2.1.52 — same hang
TERM=dumb claude— same hang- macOS full reboot (twice)
- Tested in multiple terminal windows, full screen, different directories
- Tested in empty
/tmp/claude-testdirectory — same hang - Verified no residual node processes via
ps aux | grep node - Restored original
~/.claude/from backup — same hang
Key Observation
The trust dialog renders correctly. After selecting "Yes, I trust this folder" and pressing Enter, the screen clears and the process hangs with a blank screen. The hang occurs after trust acceptance, during the next TUI initialization step.
Expected Behavior
After accepting workspace trust, Claude Code should display the interactive session prompt.
Actual Behavior
Screen clears after trust acceptance and process hangs indefinitely. No output, no cursor, terminal completely unresponsive. Only force-kill (killall -9 node or Cmd+Q Terminal) can terminate it.
Additional Context
- This issue started on March 23, 2026 while attempting to set up Remote Control
- Interactive mode was working normally as recently as March 18, 2026 (confirmed via project PROGRESS.md logs — SSH remote setup, CLAUDE.md creation, full interactive sessions)
- The issue persists across clean installs, version downgrades, and complete config resets
--printmode works perfectly, confirming the bug is isolated to the TUI/ink rendering initialization path- 24 plugins were previously enabled in
settings.json— but hang persists even withsettings.jsonset to{} - MCP servers (playwright, github, context7, google-docs) were configured — but hang persists even with all MCP configs removed
Impact: Unable to use Claude Code interactive mode, Remote Control, or any TUI-dependent feature. This is a complete blocker for a Max plan subscriber running a web development studio with multiple active ERP projects.
What Should Happen?
After accepting workspace trust, Claude Code should display the interactive session prompt and accept user input normally.
Error Messages/Logs
No error output is produced. The process hangs silently with a blank screen.
$ claude auth status
{
"loggedIn": true,
"authMethod": "claude.ai",
"apiProvider": "firstParty",
"email": "01-lee@withpic.net",
"orgId": "af51ecfa-ce65-4143-b1dd-66f83d99b59a",
"orgName": "01-lee@withpic.net's Organization",
"subscriptionType": "max"
}
$ claude --print "hello"
Hello! How can I help you today?
$ claude
[hangs indefinitely — blank screen, no output, Ctrl+C unresponsive]
Steps to Reproduce
- Confirm working non-interactive modes:
claude --version→ returns2.1.81 (Claude Code)immediately ✅claude auth status→ returns valid JSON withloggedIn: true,subscriptionType: "max"✅claude --print "hello"→ returns response immediately ✅
- Run interactive mode:
claude→ process starts (title bar showsnode · claude)- Trust dialog renders correctly: "Accessing workspace: /Users/lee-hyeongwoo"
- Select "1. Yes, I trust this folder" → press Enter
- Observe: screen clears, blank screen, process hangs indefinitely. Terminal unresponsive including Ctrl+C.
- Also tested:
TERM=dumb claude→ same hang after trust acceptance
- Also tested:
mkdir /tmp/claude-test && cd /tmp/claude-test && claude→ same hang in empty directory
Claude Model
None
Is this a regression?
Yes, this worked in a previous version
Last Working Version
2.1.81 (Claude Code) — worked on March 18, 2026
Claude Code Version
2.1.81 (Claude Code)
Platform
Anthropic API
Operating System
macOS
Terminal/Shell
Terminal.app (macOS)
Additional Information
- Issue started on March 23, 2026 while attempting to set up Remote Control feature
- Interactive mode was working normally as recently as March 18, 2026 (confirmed via project PROGRESS.md git logs — SSH remote setup, CLAUDE.md creation, full interactive sessions all worked)
- The issue persists across clean installs, version downgrades (v2.1.52), and complete config resets
--printmode works perfectly, confirming the bug is isolated to the TUI/ink rendering initialization path- 24 plugins were previously enabled in
settings.json— hang persists even withsettings.jsonset to{} - MCP servers (playwright, github, context7, google-docs) were configured — hang persists even with all MCP configs removed
- Claude Desktop app quit, macOS rebooted twice — no change
ps aux | grep nodeduring hang shows MCP-related child processes spawning but noclaudemain process visible
Troubleshooting exhaustively attempted (2+ hours):
Complete ~/.claude/ reset, MCP config removal, plugins removal, settings reset, Claude Desktop quit, killall node, version downgrade, TERM=dumb, reboot x2, empty directory test, original config restore — ALL failed.
Impact: Complete blocker for Max plan subscriber. Cannot use interactive mode, Remote Control, /bug, /doctor, or any TUI-dependent feature.
This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗