Terminal-mode sessions spin at 100% CPU: Ink rendering loop never starts after Stream started (macOS arm64)
Summary
When github@claude-plugins-official is installed but has no OAuth token configured, starting Claude Code in terminal mode (claude without --ide) causes the process to become a zombie — stuck at 90%+ CPU during startup, never reaching the interactive prompt.
Environment
- Claude Code: 2.1.27
- macOS: 26.2 (Build 25C56)
- Architecture: arm64 (Apple Silicon M1)
- Node.js: v20.19.0
Steps to Reproduce
- Install
github@claude-plugins-officialvia/plugin - Do NOT complete OAuth setup for GitHub (no token)
- Open a project that has
mcp__plugin_github_github__*permissions in.claude/settings.local.json - Run
claude(terminal mode, not--ide) - Session hangs at "Clauding…" forever, never reaches interactive prompt
- Process consumes 90%+ CPU
Observed Behavior
The GitHub MCP server starts and connects successfully to api.githubcopilot.com, but repeatedly logs "No token data found" (6 times in ~1 second). After the final token failure, the debug log stops — the session never reaches "Stream started".
Zombie session debug log (session 097c6977, sandbox-2.0 project, 348 lines total — never starts):
09:07:43.373 MCP server "plugin:github:github": Initializing HTTP transport to https://api.githubcopilot.com/mcp/
09:07:43.397 MCP server "plugin:github:github": Starting connection with timeout of 30000ms
09:07:43.402 MCP server "plugin:github:github": No token data found ← 1st
09:07:44.238 MCP server "plugin:github:github": No token data found ← 2nd
09:07:44.529 MCP server "plugin:github:github": No token data found ← 3rd
09:07:44.529 MCP server "plugin:github:github": Successfully connected to http server in 1156ms
09:07:44.529 MCP server "plugin:github:github": Connection established with capabilities: {...}
09:07:44.529 MCP server "plugin:github:github": No token data found ← 4th
09:07:44.529 MCP server "plugin:github:github": No token data found ← 5th
09:07:44.529 MCP server "plugin:github:github": No token data found ← 6th
<<< LOG ENDS HERE — session never reaches "Stream started" >>>
This pattern reproduced identically across multiple zombie sessions (f8c5aa24 and 097c6977).
Working session debug log (session 039f1d42, content-warehouse project, 568 lines — starts successfully):
09:07:34.259 Loading plugin github from source: "./external_plugins/github" ← plugin loaded
09:07:34.773 MCP server "plugin:playwright:playwright": Starting connection...
09:07:34.777 MCP server "plugin:context7:context7": Starting connection...
09:07:34.824 MCP server "plugin:supabase:supabase": Starting connection...
<<< NO "plugin:github:github" MCP server started >>>
09:07:35.658 MCP server "plugin:supabase:supabase": Successfully connected
09:07:36.500 MCP server "plugin:playwright:playwright": Successfully connected
09:07:36.690 MCP server "plugin:context7:context7": Successfully connected
09:07:38.497 Stream started - received first chunk ← SUCCESS
Key Difference
| Property | Zombie Session | Working Session |
|----------|---------------|-----------------|
| GitHub MCP started | ✅ Yes | ❌ No |
| "No token data found" | 6 times | 0 times |
| MCP servers total | 4 (playwright, context7, supabase, github) | 3 (playwright, context7, supabase) |
| Reaches "Stream started" | ❌ Never | ✅ Yes |
| CPU usage | 90%+ (zombie) | Normal |
The working session had the GitHub plugin loaded (line 114-117) but did NOT start the GitHub MCP server because the project didn't have mcp__plugin_github_github__* permissions. The zombie session had both the plugin loaded AND the MCP server started.
Expected Behavior
When the GitHub plugin has no OAuth token, it should either:
- Fail gracefully — log a warning and skip the GitHub MCP server, allowing the session to start normally
- Prompt for authentication — ask the user to authenticate instead of silently failing in a loop
- Not block session startup — the missing token for one MCP server should not prevent the entire session from starting
Workaround
Uninstalling the GitHub plugin via /plugin → Uninstall plugin → github@claude-plugins-official resolves the issue. After uninstalling, sessions start normally in both terminal and IDE modes.
Additional Context
- The issue does NOT affect
--idemode (VS Code) — only plain terminalclaudecommands - The same GitHub plugin + no token combination works fine in VS Code, suggesting different initialization paths
SIGTERM(kill) does not terminate the zombie processes;SIGKILL(kill -9) is required- Multiple simultaneous zombie sessions can accumulate if the user retries launching Claude
This issue has 6 comments on GitHub. Read the full discussion on GitHub ↗