Hmbown/CodeWhale · error

Full Access cannot override {}; change that controlling sour

Error message

Full Access cannot override {}; change that controlling source first

What it means

Raised in apply_setup_runtime_preset when selecting the Full Access (HighTrustLocal) preset while runtime_preset_blocker reports a controlling config source that would be overridden. Full Access raises the trust level, so an explicitly configured lower-trust controlling source must be changed first rather than being silently overridden.

Source

Thrown at crates/tui/src/tui/ui/apply.rs:2272

    state: codewhale_config::SetupState,
) -> Result<String> {
    if let Some(source) = config.runtime_preset_blocker(
        app.config_path.as_deref(),
        app.config_profile.as_deref(),
        &app.workspace,
    ) {
        anyhow::bail!(
            "Runtime presets cannot override {source}; change that controlling source first"
        );
    }
    if preset == crate::tui::setup::SetupRuntimePreset::HighTrustLocal {
        let approval = config.approval_policy_control(
            app.config_path.as_deref(),
            app.config_profile.as_deref(),
            &app.workspace,
        );
        if !approval.editable_root() {
            anyhow::bail!(
                "Full Access cannot override {}; change that controlling source first",
                approval.label()
            );
        }
    }

    let settings_path = Settings::path().context("failed to resolve settings path")?;
    let settings_snapshot = RuntimePresetFileSnapshot::capture(settings_path)?;
    // The preset's settings read, its config-document write, and its settings
    // write are one durable transaction with file-snapshot rollback. Hold the
    // settings transaction lock across all of it so a concurrent writer (a queued
    // mode/thinking drain, the Shift+Tab posture write) can neither be lost by
    // this save nor be reverted by the rollback.
    // Every durable write happens inside this closure, so the settings lock is
    // released before live state moves below.
    crate::settings::with_settings_transaction(|settings_transaction| {
        let mut settings = settings_transaction
            .load()

View on GitHub (pinned to 0c42157ee5)

Solutions

  1. Change or remove the controlling approval/trust source named in the error
  2. Re-run the Full Access preset after the explicit setting is cleared
  3. If the controlling source must stay, configure Full Access equivalents in that source directly
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at crates/tui/src/tui/ui/apply.rs:2272 when the library encounters an invalid state.

Common situations: See trigger scenarios.


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