Hmbown/CodeWhale · error · anyhow::Error

permission_posture must not be empty

Error message

permission_posture must not be empty

What it means

Thread-update validation: a `permission_posture` value that is whitespace-only was supplied. Same optional-field guard as the other thread fields — blank is not a valid posture, so the update is rejected before any state changes.

Source

Thrown at crates/tui/src/runtime_threads.rs:4655

            && req.workspace.is_none()
        {
            bail!("At least one thread field is required");
        }

        if let Some(model) = req.model.as_ref()
            && model.trim().is_empty()
        {
            bail!("model must not be empty");
        }
        if let Some(mode) = req.mode.as_ref()
            && mode.trim().is_empty()
        {
            bail!("mode must not be empty");
        }
        if let Some(permission_posture) = req.permission_posture.as_ref()
            && permission_posture.trim().is_empty()
        {
            bail!("permission_posture must not be empty");
        }
        if let Some(workspace) = req.workspace.as_ref()
            && workspace.as_os_str().is_empty()
        {
            bail!("workspace must not be empty");
        }

        let configured_sandbox_mode = self.read_config().sandbox_mode.clone();
        let (thread, changes, evicted_engine, posture_engine) = {
            // Take the active guard first so a workspace mutation can check
            // and evict the cached engine atomically with the durable update.
            // Using the same order as start/compact avoids lock inversion.
            let mut active = self.active.lock().await;
            let _thread_mutation = self.store.thread_mutation.lock();
            let mut thread = self
                .store
                .load_thread(id)
                .with_context(|| format!("Thread not found: {id}"))?;

View on GitHub (pinned to 0c42157ee5)

Solutions

  1. Omit permission_posture if it should not change
  2. Or pass a valid posture value
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at crates/tui/src/runtime_threads.rs:4655 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/8fd36ed9e616ee1e. Report an issue: GitHub.