warpdotdev/warp · error · anyhow::Error

Runner '{id}' not found

Error message

Runner '{id}' not found

What it means

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.

Source

Thrown at app/src/ai/agent_sdk/runner.rs:234

    }

    Ok(inquire::Confirm::new(&format!("Delete runner '{uid}'?"))
        .with_default(false)
        .prompt()
        .unwrap_or_default())
}

/// Resolve a runner by UID or (unambiguous) name from a fetched list.
fn resolve_runner<'a>(
    runners: &'a [Runner],
    id: Option<&str>,
    name: Option<&str>,
) -> Result<&'a Runner> {
    if let Some(id) = id {
        return runners
            .iter()
            .find(|runner| runner.uid.inner() == id)
            .ok_or_else(|| anyhow!("Runner '{id}' not found"));
    }

    let name = name.ok_or_else(|| anyhow!("A runner UID or --name is required"))?;
    let matches: Vec<&Runner> = runners
        .iter()
        .filter(|runner| runner.config.name == name)
        .collect();
    match matches.as_slice() {
        [] => Err(anyhow!("Runner '{name}' not found")),
        [runner] => Ok(runner),
        _ => Err(anyhow!(
            "Multiple runners match '{name}'; specify the runner by UID"
        )),
    }
}

/// Build the [`RunnerInput`] for a create operation.
fn build_create_input(args: CreateRunnerArgs, owner: GqlOwner) -> UpsertRunnerInput {

View on GitHub (pinned to e72fd7aacb)

Solutions

  1. Run `warp runner list` and copy the exact UID
  2. Confirm you are operating in the right workspace/team scope for the runner
  3. In idempotent cleanup scripts, treat this error as an acceptable terminal state

Example fix

# before
warp runner delete rnr_12AB34   # typo in the UID

# after
warp runner list
warp runner delete <exact-uid-from-list>
Defensive patterns

Strategy: validation

Validate before calling

# Verify the UID exists in the current scope before mutating
warp 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; }
warp runner delete "$uid"

Try / catch

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; }

Prevention

When it happens

Trigger: `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.

Common situations: 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.

Related errors


AI-assisted analysis of warpdotdev/warp@e72fd7aacb (2026-08-16). Data as JSON: /api/errors/383abb15ec524d15. Report an issue: GitHub.