{"version":"2.1.59","anchor":"headless-login-via-refresh-token","canonical_anchor":"headless-login-via-refresh-token","heading":"Headless Login via Refresh Token","tier":null,"area":null,"scope":null,"heads_up":null,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.59\/e\/headless-login-via-refresh-token","release_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.59","markdown":"### Headless Login via Refresh Token\n\n**What**\n\nLog in to Claude Code non-interactively by providing an OAuth refresh token via environment variables, enabling automated CI\/CD and headless deployments without a browser.\n\n**Usage**\n\n`export CLAUDE_CODE_OAUTH_REFRESH_TOKEN=\"your-refresh-token\" export CLAUDE_CODE_OAUTH_SCOPES=\"user:inference\" claude \/login` **Details** - `CLAUDE_CODE_OAUTH_SCOPES` is required when using the refresh token \u2014 the CLI exits with a helpful error message if missing - Scopes should be space-separated (e.g., `\"user:profile user:inference user:sessions:claude_code user:mcp_servers\"`) - Bypasses the browser-based OAuth flow entirely **Evidence** Refresh token login flow (search for `\"CLAUDE_CODE_OAUTH_REFRESH_TOKEN\"`)"}