Hmbown/CodeWhale · error

Fleet worker {} has an inconsistent persisted prompt

Error message

Fleet worker {} has an inconsistent persisted prompt

What it means

The registered launch manifest's prompt must equal the registered objective, and the registered objective must equal the freshly expected objective optionally extended with the bounded 'Accepted coordination decisions' projection header. A mismatch means the persisted prompt no longer describes the task this lease is for, and relaunching from it could run the wrong instructions.

Source

Thrown at crates/tui/src/fleet/manager.rs:2312

        manifest.profile.max_spawn_depth = 0;
    }
    spec
}

fn validate_registered_launch_spec(
    registered: &AgentWorkerSpec,
    expected: &AgentWorkerSpec,
) -> Result<()> {
    let Some(registered_manifest) = registered.launch_manifest.as_ref() else {
        bail!(
            "Fleet worker {} has no persisted launch manifest",
            registered.worker_id
        );
    };
    if registered_manifest.prompt != registered.objective
        || !registered_prompt_matches_expected(&registered.objective, &expected.objective)
    {
        bail!(
            "Fleet worker {} has an inconsistent persisted prompt",
            registered.worker_id
        );
    }

    // Coordination may append a bounded decision projection to the prompt.
    // Every identity, route, permission, workspace, scope, and attempt field
    // must otherwise match a fresh derivation from this exact leased task.
    let mut registered_identity = registered.clone();
    let mut expected_identity = expected.clone();
    registered_identity.objective.clear();
    expected_identity.objective.clear();
    if let Some(manifest) = registered_identity.launch_manifest.as_mut() {
        manifest.prompt.clear();
    }
    if let Some(manifest) = expected_identity.launch_manifest.as_mut() {
        manifest.prompt.clear();
    }

View on GitHub (pinned to 0c42157ee5)

Solutions

  1. Do not edit task specs mid-run; cancel and create a new run with the edited objective
  2. Complete or cancel the drifted worker so a fresh, consistent launch record is created on retry
  3. Verify all fleet processes use the same Codewhale version so prompt derivation is stable
Defensive patterns

Strategy: fallback

Try / catch

match validate_registered_launch_spec(&record.spec, &expected) {
    Ok(()) => Ok(()),
    Err(err) if err.to_string().contains("inconsistent persisted prompt") => {
        // objective drifted: cancel task and re-lease instead of relaunching stale instructions
        Err(err)
    }
    Err(err) => Err(err),
}

Prevention

When it happens

Trigger: The task's objective was edited or re-derived differently from when the worker registered (spec change, migration, partial event replay), so manifest.prompt diverges from objective/expected prompt.

Common situations: Editing task specs between retries; resuming a run after a Codewhale upgrade that changed prompt derivation; ledger rebuilt from a subset of events.

Related errors


AI-assisted analysis of Hmbown/CodeWhale@0c42157ee5 (2026-08-20). Data as JSON: /api/errors/c97f420a379a5b91. Report an issue: GitHub.