{"record":{"id":"383abb15ec524d15","repo":"warpdotdev/warp","slug":"runner-id-not-found","errorCode":null,"errorMessage":"Runner '{id}' not found","messagePattern":"Runner '(.+?)' not found","errorType":"validation","errorClass":"anyhow::Error","httpStatus":null,"severity":"error","filePath":"app/src/ai/agent_sdk/runner.rs","lineNumber":234,"sourceCode":"    }\n\n    Ok(inquire::Confirm::new(&format!(\"Delete runner '{uid}'?\"))\n        .with_default(false)\n        .prompt()\n        .unwrap_or_default())\n}\n\n/// Resolve a runner by UID or (unambiguous) name from a fetched list.\nfn resolve_runner<'a>(\n    runners: &'a [Runner],\n    id: Option<&str>,\n    name: Option<&str>,\n) -> Result<&'a Runner> {\n    if let Some(id) = id {\n        return runners\n            .iter()\n            .find(|runner| runner.uid.inner() == id)\n            .ok_or_else(|| anyhow!(\"Runner '{id}' not found\"));\n    }\n\n    let name = name.ok_or_else(|| anyhow!(\"A runner UID or --name is required\"))?;\n    let matches: Vec<&Runner> = runners\n        .iter()\n        .filter(|runner| runner.config.name == name)\n        .collect();\n    match matches.as_slice() {\n        [] => Err(anyhow!(\"Runner '{name}' not found\")),\n        [runner] => Ok(runner),\n        _ => Err(anyhow!(\n            \"Multiple runners match '{name}'; specify the runner by UID\"\n        )),\n    }\n}\n\n/// Build the [`RunnerInput`] for a create operation.\nfn build_create_input(args: CreateRunnerArgs, owner: GqlOwner) -> UpsertRunnerInput {","sourceCodeStart":216,"sourceCodeEnd":252,"githubUrl":"https://github.com/warpdotdev/warp/blob/e72fd7aacbbb2236d9b3be2aad7e7178fe94b4bc/app/src/ai/agent_sdk/runner.rs#L216-L252","documentation":"Runner resolution by UID scanned the fetched runner list and found no runner whose uid equals the given id. The list is whatever the server returned for the current workspace/team scope, so a correct UID in the wrong scope also misses.","triggerScenarios":"`warp runner delete/get <uid>` (any path through resolve_runner with an explicit id) where the UID is mistyped, belongs to another workspace, or the runner was already deleted.","commonSituations":"Truncated or transposed UIDs; re-running a cleanup script after the runner was already removed; being logged into a different team than the one owning the runner.","solutions":["Run `warp runner list` and copy the exact UID","Confirm you are operating in the right workspace/team scope for the runner","In idempotent cleanup scripts, treat this error as an acceptable terminal state"],"exampleFix":"# before\nwarp runner delete rnr_12AB34   # typo in the UID\n\n# after\nwarp runner list\nwarp runner delete <exact-uid-from-list>","handlingStrategy":"validation","validationCode":"# Verify the UID exists in the current scope before mutating\nwarp runner list 2>/dev/null | jq -e --arg u \"$uid\" '.[].uid == $u' >/dev/null || { echo \"runner $uid not found in current scope\" >&2; exit 1; }\nwarp runner delete \"$uid\"","typeGuard":null,"tryCatchPattern":"out=$(warp runner delete \"$uid\" 2>&1) || { case \"$out\" in *\"not found\"*) echo 'already gone; treating as success' >&2; exit 0;; *) echo \"$out\" >&2; exit 1;; esac; }","preventionTips":["List runners and copy UIDs verbatim rather than typing them","Confirm workspace/team scope matches where the runner lives","Make cleanup scripts idempotent by accepting not-found as success"],"tags":["runner","not-found","cli"],"backgroundTag":null,"analyzedSha":"e72fd7aacbbb2236d9b3be2aad7e7178fe94b4bc","analyzedAt":"2026-08-16T08:27:25.381Z","schemaVersion":2},"datasetVersion":"2026-08-16T13:17:31.715Z"}