xai-org/grok-build · error

local-workspace resolve returned no config after ack

Error message

local-workspace resolve returned no config after ack

What it means

`confirm_welcome_local_workspace_ack` finalizes the welcome Local ACK flow: it force-resolves the local workspace config for the given cwd, then stamps and persists the ack. If the forced resolve returns None after the user confirmed the ACK dialog, this error is raised because the confirmation cannot be completed.

Source

Thrown at crates/codegen/xai-grok-pager/src/views/welcome/workspace_mode.rs:452

                session_override: Some(Some(cfg)),
                warning: None,
            })
        }
    }
}

/// Confirm Local ACK. If `agents_alive`, return oneshot only (keep process stamp).
#[cfg(feature = "local-workspace")]
pub fn confirm_welcome_local_workspace_ack(
    cwd: &std::path::Path,
    agents_alive: bool,
) -> anyhow::Result<crate::app::session_startup::LocalWorkspaceConfig> {
    use crate::app::session_startup::{
        resolve_local_workspace_config, set_active_local_workspace, write_local_workspace_ack,
    };

    let cfg = resolve_local_workspace_config(true, Some(None), None, Some(cwd))?
        .ok_or_else(|| anyhow::anyhow!("local-workspace resolve returned no config after ack"))?;
    if !agents_alive {
        set_active_local_workspace(Some(cfg.clone()))?;
    }
    write_local_workspace_ack();
    log_welcome_ack("confirmed");
    Ok(cfg)
}

/// Sync UI selection from a startup-locked stamp (Own/Attach select Local).
#[cfg(feature = "local-workspace")]
pub fn mode_from_active_stamp(
    stamp: Option<&crate::app::session_startup::LocalWorkspaceConfig>,
) -> WelcomeWorkspaceMode {
    match stamp {
        Some(_) => WelcomeWorkspaceMode::LocalWorkspace,
        None => WelcomeWorkspaceMode::Sandbox,
    }
}

View on GitHub (pinned to bc7f02eddd)

Solutions

  1. Verify the project directory still exists and is accessible, then re-attempt the Local confirmation
  2. Restart grok from a valid working directory and redo the ACK flow
  3. Clear stale local-workspace stamp/ack state if the resolver keeps refusing
  4. If reproducible, inspect `resolve_local_workspace_config` own-mode branch for why it yields None

Example fix

// before
let cfg = resolve_local_workspace_config(true, Some(None), None, Some(cwd))?.ok_or_else(|| anyhow!("local-workspace resolve returned no config after ack"))?;
// after (fail with actionable context)
let cfg = resolve_local_workspace_config(true, Some(None), None, Some(cwd))?.ok_or_else(|| {
    anyhow::anyhow!("local-workspace resolve returned no config after ack for cwd={}; check the directory exists", cwd.display())
})?;
Defensive patterns

Strategy: try-catch

Validate before calling

// guard before rendering the ACK confirm action
if !std::path::Path::new(&cwd).is_dir() {
    // disable/defer ACK confirm; resolver will return None
    eprintln!("project dir missing; Local ACK cannot be confirmed now");
}

Try / catch

match confirm_welcome_local_workspace_ack(&ctx, cwd).await {
    Err(e) if e.to_string().contains("no config after ack") => {
        log::warn!("ack confirm failed: {e}; keep dialog open and ask user to re-confirm");
    }
    other => other?,
}

Prevention

When it happens

Trigger: User clicks/acks the "welcome Local requires ACK confirm" prompt while `resolve_local_workspace_config(true, Some(None), None, Some(cwd))` returns None — same resolver edge cases as error 408 (invalid cwd, resolver state refusing own-mode).

Common situations: Project directory removed or unmounted while the welcome dialog was open; resolver prerequisites not met at confirm time; version regression in session_startup resolver behavior.

Related errors


AI-assisted analysis of xai-org/grok-build@bc7f02eddd (2026-08-31). Data as JSON: /api/errors/d4a7ab462912f4ab. Report an issue: GitHub.