{"record":{"id":"9bef9f0ed43d51c3","repo":"warpdotdev/warp","slug":"timed-out-refreshing-team-metadata-9bef9f","errorCode":null,"errorMessage":"Timed out refreshing team metadata","messagePattern":"Timed out refreshing team metadata","errorType":"exception","errorClass":"anyhow::Error","httpStatus":null,"severity":"error","filePath":"app/src/ai/agent_sdk/runner.rs","lineNumber":107,"sourceCode":"    fn create(\n        &self,\n        output_format: OutputFormat,\n        args: CreateRunnerArgs,\n        ctx: &mut ModelContext<Self>,\n    ) {\n        // Mirror the server rule client-side so users get a fast, clear error.\n        if let Err(msg) =\n            validate_os_config(args.os, args.docker_image.as_deref(), args.macos_version)\n        {\n            super::report_fatal_error(anyhow!(msg), ctx);\n            return;\n        }\n\n        // Refresh team metadata so owner resolution can default to the team.\n        let refresh = super::common::refresh_workspace_metadata(ctx);\n        ctx.spawn(refresh, move |_, result, ctx| {\n            if result.is_err() {\n                super::report_fatal_error(anyhow!(\"Timed out refreshing team metadata\"), ctx);\n                return;\n            }\n\n            let owner =\n                match super::common::resolve_owner(args.scope.team, args.scope.personal, ctx) {\n                    Ok(owner) => owner,\n                    Err(e) => {\n                        super::report_fatal_error(e, ctx);\n                        return;\n                    }\n                };\n\n            let factory = ServerApiProvider::as_ref(ctx).get_factory_client();\n            let input = build_create_input(args, owner.into());\n\n            ctx.spawn(\n                async move {\n                    let upserted = factory.upsert_runner(input).await?;","sourceCodeStart":89,"sourceCodeEnd":125,"githubUrl":"https://github.com/warpdotdev/warp/blob/e72fd7aacbbb2236d9b3be2aad7e7178fe94b4bc/app/src/ai/agent_sdk/runner.rs#L89-L125","documentation":"Runner creation refreshes team/workspace metadata first so owner resolution can default to the team (refresh_workspace_metadata wraps the refresh in WORKSPACE_METADATA_REFRESH_TIMEOUT). If that refresh returns Err, the create aborts before resolve_owner runs.","triggerScenarios":"`warp runner create` when the workspace/team metadata request to warp-server times out — slow or blocked network, server latency, or an expired auth token failing mid-flight.","commonSituations":"Flaky VPN or tethered connections; staging under load; first command after a long idle period re-authenticating slowly.","solutions":["Retry the create command","Verify network/proxy access to the warp-server URL","Confirm auth is healthy (`warp whoami`) so the refresh can authenticate","Check server health if failures cluster in time"],"exampleFix":null,"handlingStrategy":"retry","validationCode":null,"typeGuard":null,"tryCatchPattern":"for i in 1 2 3; do\n  out=$(warp runner create $ARGS 2>&1) && { echo \"$out\"; exit 0; }\n  case \"$out\" in *'Timed out refreshing team metadata'*) wait $((i * 5));; *) echo \"$out\" >&2; exit 1;; esac\ndone\necho 'team metadata refresh kept timing out' >&2; exit 1","preventionTips":["Verify `warp whoami` succeeds before runner operations that need team context","Retry once on timeout before investigating; these are usually transient","Stabilize the network path (VPN/proxy) for long-running automation sessions"],"tags":["network","timeout","runner","workspace"],"backgroundTag":null,"analyzedSha":"e72fd7aacbbb2236d9b3be2aad7e7178fe94b4bc","analyzedAt":"2026-08-16T08:27:25.381Z","schemaVersion":2},"datasetVersion":"2026-08-16T13:17:31.715Z"}