[Bug] MCP authentication prompt hangs when pressing enter to continue
Status Open
Reported on v2.1.90
Maintainer reply None cached
Workaround ✓ Mentioned in thread ↓
Activity 6 comments · opened Apr 2, 2026
Bug Description
When authenticating or un-athenticating from MCPs via the /mcp list, the final step where you are prompted to press enter to continue is broken and hangs. This also hapens when when you attempt to unauthenticate from a mcp server. On occasion restarting claude fixes this but I haven't found a way to un-athenticate from an MCP via this path that works yet.
Environment Info
- Platform: darwin
- Terminal: ghostty
- Version: 2.1.90
- Feedback ID: a55f2126-a502-4072-a33d-d5f56ce0dc49
Errors
[]
6 Comments
same here, stuck, no response after pressing Enter
<img width="506" height="220" alt="Image" src="https://github.com/user-attachments/assets/04a5f1b6-5fd6-47e8-b3bd-03f60d69ee5b" />
Draft bug report: MCP OAuth "Press Enter to continue" ignores keyboard input
Intended as a follow-up comment on:
---
Summary
After completing OAuth in the browser for a remote MCP server, the "Press Enter to continue" modal in Claude Code does not respond to Enter, Esc, or any other key. Ctrl+C is the only escape. Reproduces in iTerm2 and Terminal.app. Byte-level packet capture shows Enter is being delivered to Claude Code as
\r(0x0D) — the process receives it and ignores it. The bug is not in the host terminal.Environment
claude.ai/kite-style remote OAuth)Reproduction
claude --dangerously-skip-permissions/mcp→ select Kinobi → follow OAuth link to browserEvidence: bytes reach the process
I captured the raw bytes flowing from iTerm2 into Claude Code's controlling pty using a small pty-wrapper that forwards stdin to the child while logging every byte with a timestamp. The capture point sits between the terminal emulator and Claude Code.
iTerm2 capture
Timestamps are unix-seconds-with-ms, relative-zeroed at
1776173545. Annotations added for clarity.The bytes Claude Code is receiving for "Enter" are
0x0D— a plain carriage return, exactly what a POSIX terminal delivers for Enter in raw mode. Esc is0x1B. Focus-reporting (CSI O/CSI I) was correctly emitted around the OAuth redirect.Native Claude Code installed via npm and run directly inside iTerm2 (no wrapper, no intermediate pty) reproduces the same hang. The OAuth-ignore-Enter behavior is independent of the host terminal.
What this rules out
\r, same as every other terminal tested.ICRNL/ raw-mode translation — bytes verified at the pty master fd.TERM_PROGRAM, DA/DA2 responses all present in iTerm capture.CSI [O/CSI [Iwere delivered correctly around OAuth.Hypotheses
The process reads
\rbut the modal's input handler does not advance. Likely causes:useInputconsumer when the OAuth callback returns. The browser redirect might complete after the modal has been rendered but before the input hook runs (race between the OAuth HTTP server'sonCompleteand the Ink focus stack).process.stdin.resume()or equivalent is not being called, leaving stdin paused at the kernel level — but this would also block Ctrl+C, which does work, so less likely.Reproducibility
100% — hits every time on this machine, and separately reported by multiple users on #42707 / #45875 / #45268 / #45220.
Ask
Please prioritize — every MCP server using OAuth through the
claude.aiproxy is currently unusable, and there is no keyboard-level workaround. The byte-level evidence here should make the fix localized to the Ink prompt's input hook around the OAuth-complete transition.Happy to share raw capture logs if useful.
Pressing tab first then enter works for me
Same issue as of 04/16/2026
Environment
Yoo this works! I wonder why though.
Reproduced on macOS with Claude Code 2.1.118 inside WezTerm (first WezTerm report in this thread, confirming the bug is terminal-independent).
Adding a few observations not captured in existing comments:
/loginsession sat on "Press Enter to continue…", the laptop slept for several hours, and the modal was unresponsive on wake. Consistent with an Ink input-hook subscription being lost across long pauses./loginin multiple panes: I had/loginrunning concurrently in two WezTerm panes (multi-account switching). Both ended up stuck on the same modal. Not an Agent Teams setup — plain multi-pane Claude Code.psstate:S+(sleeping, foreground), main thread parked inkevent64— normal idle wait, not a spinstty -aon the controlling pty:-icanon -isig -iexten -echo(standard raw mode), identical to healthy paneswezterm cli send-text --pane-id <id> $'\r'writes\rdirectly to the pty master, bypassing the GUI keyboard input path. No reaction — corroborates the byte-capture evidence above that the bytes reach the process but the in-process input handler drops them.Happy to share more if useful.