warpdotdev/warp · error · anyhow::Error

Schedule not found

Error message

Schedule not found

What it means

During a schedule command, the schedule ID from args is parsed into a server SyncId, warp drive is refreshed, and then the local cloud-object store is queried with CloudScheduledAmbientAgent::get_by_id. 'Schedule not found' means that after a successful sync no scheduled ambient agent with that server ID is visible to the current user: wrong ID, deleted schedule, or an object the caller cannot see.

Source

Thrown at app/src/ai/agent_sdk/schedule.rs:609

}

fn get(
    ctx: &mut AppContext,
    output_format: OutputFormat,
    args: GetScheduleArgs,
) -> anyhow::Result<()> {
    let schedule_id = SyncId::ServerId(ServerId::try_from(args.schedule_id)?);

    ScheduledAgentManager::handle(ctx).update(ctx, move |_manager, ctx| {
        let warp_drive_sync_future = super::common::refresh_warp_drive(ctx);
        ctx.spawn(warp_drive_sync_future, move |manager, result, ctx| {
            if let Err(err) = result {
                super::report_fatal_error(err, ctx);
                return;
            }

            let Some(schedule) = CloudScheduledAmbientAgent::get_by_id(&schedule_id, ctx) else {
                super::report_fatal_error(anyhow::anyhow!("Schedule not found"), ctx);
                return;
            };

            let id = match &schedule_id {
                SyncId::ServerId(server_id) => server_id.to_string(),
                SyncId::ClientId(_) => "Unsynced".to_string(),
            };
            let scope = super::common::format_owner(&schedule.permissions().owner).to_string();
            let config = schedule.model().string_model.clone();

            // Don't hold references into the CloudObject store across an async spawn.
            let history_future = manager.fetch_schedule_history(schedule_id, ctx);

            ctx.spawn(history_future, move |_manager, history, ctx| {
                let history = match history {
                    Ok(v) => v,
                    Err(err) => {
                        log::warn!("Failed to fetch scheduled agent history: {err:#}");

View on GitHub (pinned to e72fd7aacb)

Solutions

  1. List schedules and copy the current ID from the live listing
  2. Confirm the schedule still exists and is owned by (or shared with) the current user
  3. Retry after a completed sync; if it still fails, treat the ID as wrong or deleted

Example fix

// before
oz schedule update 01J8ZK9abc...
# Error: Schedule not found

// after
oz schedule list
oz schedule update <id-from-list>
Defensive patterns

Strategy: validation

Validate before calling

let id = ServerId::try_from(raw_id)?;
refresh_warp_drive(ctx).await?;
if CloudScheduledAmbientAgent::get_by_id(&SyncId::ServerId(id), ctx).is_none() {
    anyhow::bail!("schedule {id} not found after sync; re-list schedules");
}
// safe to proceed with update/delete

Prevention

When it happens

Trigger: oz schedule update/delete <id> where the ID is malformed-or-stale, the schedule was already deleted by another client, or the synced cloud objects do not include it (permissions/ownership).

Common situations: Reusing an ID copied from an old listing; schedule deleted from another machine; permissions changed so the object is no longer synced to this account; typos in long opaque IDs.

Related errors


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