warpdotdev/warp · error · anyhow::Error

Secret '{}' not found

Error message

Secret '{}' not found

What it means

During update_secret, the secrets list is fetched from the server and find_secret_type searches it by name within the resolved owner scope. This error means no secret with that name exists for that owner: typo, deleted secret, or a personal-vs-team scope mismatch between the lookup and where the secret actually lives.

Source

Thrown at app/src/ai/agent_sdk/secret.rs:433

            };

            if let Some(secret_value) = secret_value {
                // Look up the existing secret's type so we use the correct ManagedSecretValue variant.
                let list_future = manager.list_secrets();
                ctx.spawn(list_future, move |manager, list_result, ctx| {
                    let secrets = match list_result {
                        Ok(secrets) => secrets,
                        Err(err) => {
                            super::report_fatal_error(err, ctx);
                            return;
                        }
                    };

                    let secret_type = match find_secret_type(&secrets, &args.name, &secret_owner) {
                        Some(t) => t,
                        None => {
                            super::report_fatal_error(
                                anyhow::anyhow!("Secret '{}' not found", args.name),
                                ctx,
                            );
                            return;
                        }
                    };

                    let managed_secret_value =
                        match make_secret_value_from_gql_type(secret_type, &secret_value) {
                            Ok(v) => v,
                            Err(err) => {
                                super::report_fatal_error(err, ctx);
                                return;
                            }
                        };
                    let update_future = manager.update_secret(
                        secret_owner,
                        args.name.clone(),
                        Some(managed_secret_value),

View on GitHub (pinned to e72fd7aacb)

Solutions

  1. Run the secret list command with the same owner/scope flags and confirm the exact name
  2. Pass the matching --owner flag so the lookup hits the scope where the secret lives
  3. Re-create the secret if it was deleted
  4. Copy-paste the name from the listing rather than typing it

Example fix

// before
oz secret update deploy-key --value newkey
# Error: Secret 'deploy-key' not found

// after
oz secret list --owner my-team        # name lives in team scope
oz secret update deploy-key --owner my-team --value newkey
Defensive patterns

Strategy: validation

Validate before calling

let secrets = list_secrets(&owner).await?;
let secret_type = find_secret_type(&secrets, &args.name, &secret_owner)
    .ok_or_else(|| anyhow::anyhow!("no secret '{}' under {:?}; check --owner", args.name, owner))?;
update_secret(secret_type, args).await?;

Prevention

When it happens

Trigger: oz secret update <name> --value ... where the name does not exist under the resolved owner (e.g. missing --owner <team> so the lookup runs in personal scope), or the secret was deleted.

Common situations: Forgetting the team owner flag; typos; stale names after delete/re-create; assuming the update searches all scopes.

Related errors


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