{"version":"2.1.305","anchor":"claude-auth-login-handles-no-callback-listener-headlessssh","canonical_anchor":"claude-auth-login-handles-no-callback-listener-headlessssh","heading":"Sign-in falls back to pasting a code when the local listener cannot start","tier":"use","area":"Auth","scope":"individual","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.305\/e\/claude-auth-login-handles-no-callback-listener-headlessssh","release_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.305","markdown":"### Sign-in falls back to pasting a code when the local listener cannot start\n\nIf Claude Code cannot open its local sign-in listener, login now shows a URL and asks you to paste the code instead of failing\n\n**What**\n\nWhen you sign in, Claude Code normally starts a small local listener that receives the result from your browser. If that listener could not start, login failed.\n\n- Now login continues with a manual URL and asks you to paste the code shown after signing in, at the prompt \"Paste code here > \".\n\n- The login screen says \"Use the URL below to sign in\" instead of \"Browser didn't open? Use the url below to sign in\".\n\n- `claude auth login` in a terminal prints \"Sign in at:\" with the URL and waits for the code; Ctrl-D closes the prompt and stops the login.\n\n- Running out of file handles (EMFILE or ENFILE) still stops login with an error.\n\n- If the fallback cannot be used, you see \"Couldn't start the local listener that receives the browser sign-in. Try again.\" with \" Run with --debug for the underlying error.\" added.\n\n- Separately, the sign-in URL builder can add one extra permission scope through a new `alsoRequestScope` option; no caller was found using it.\n\n**Why**\n\nLogin can work on headless or remote machines and where the local port is blocked, and failures point you to `--debug`.\n\n- Area: Auth\n- Names: `claude auth login`\n- Tier: Use it now\n- Useful: 3\/5\n- Signal: 1\/5\n- Scope: individual\n- Heads-up: no"}