{"record":{"id":"79967dcf28a27844","repo":"xai-org/grok-build","slug":"not-signed-in-run-grok-login-to-authenticate-o","errorCode":null,"errorMessage":"Not signed in. Run `grok login` to authenticate (or `grok login --device-code` if no browser is available).","messagePattern":"Not signed in\\. Run `grok login` to authenticate \\(or `grok login --device-code` if no browser is available\\)\\.","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"crates/codegen/xai-grok-pager/src/headless.rs","lineNumber":471,"sourceCode":"         Alternatively, set the XAI_API_KEY environment variable \\\n         or run `grok login` on a machine with a browser.\"\n            .to_string()\n    }\n}\n\n/// Authenticate via the agent's `defaultAuthMethodId`, failing closed when none is available.\n/// Returns whether the selected method is API-key auth.\nasync fn authenticate(\n    acp_tx: &AcpAgentTx,\n    auths: &[acp::AuthMethod],\n    default_auth_method_id: Option<&acp::AuthMethodId>,\n) -> anyhow::Result<bool> {\n    let method_id = crate::acp::select_eager_auth_method(auths, default_auth_method_id)\n        .ok_or_else(|| {\n            use std::io::IsTerminal;\n            let interactive = std::io::stdin().is_terminal()\n                && !xai_grok_shell::util::clipboard::is_remote_session();\n            anyhow::anyhow!(\"{}\", auth_required_message(interactive))\n        })?;\n    let kind = AuthMethodKind::from_id(&method_id);\n    // Prefer non-interactive methods only; interactive login is not usable headless.\n    if kind.needs_interactive_login() {\n        use std::io::IsTerminal;\n        let interactive =\n            std::io::stdin().is_terminal() && !xai_grok_shell::util::clipboard::is_remote_session();\n        anyhow::bail!(\"{}\", auth_required_message(interactive));\n    }\n    let is_api_key_auth = kind.is_api_key();\n    let _resp: acp::AuthenticateResponse = acp_send(\n        acp::AuthenticateRequest::new(method_id)\n            .meta(serde_json::json!({\"headless\": true}).as_object().cloned()),\n        acp_tx,\n    )\n    .await?;\n    Ok(is_api_key_auth)\n}","sourceCodeStart":453,"sourceCodeEnd":489,"githubUrl":"https://github.com/xai-org/grok-build/blob/bc7f02eddd3d84085849dc19ed216f11c23b0571/crates/codegen/xai-grok-pager/src/headless.rs#L453-L489","documentation":"Error \"Not signed in. Run `grok login` to authenticate (or `grok login --device-code` if no browser is available).\" thrown in xai-org/grok-build.","triggerScenarios":"Thrown at crates/codegen/xai-grok-pager/src/headless.rs:471 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":[],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"bc7f02eddd3d84085849dc19ed216f11c23b0571","analyzedAt":"2026-08-31T04:59:42.031Z","schemaVersion":2},"datasetVersion":"2026-08-31T09:17:48.483Z"}