xai-org/grok-build · error
clear failed
Error message
clear failed
What it means
run_clear deletes memory files for each ClearTarget and collects per-target errors. If every target's clear closure returned an error (nothing cleared and errors non-empty), it prints the details to stderr and returns the generic anyhow error "clear failed". The library throws it as a summary sentinel: the specifics (label + underlying error per target) are printed above it, not embedded in the error value.
Source
Thrown at crates/codegen/xai-grok-pager/src/memory_cmd.rs:128
Err(e) => {
errors.push(format!("{}: {e}", t.label));
}
}
}
if cleared && errors.is_empty() {
println!("Memory cleared.");
} else if cleared {
println!("Memory partially cleared. Errors:");
for e in &errors {
eprintln!(" {e}");
}
} else if !errors.is_empty() {
eprintln!("Failed to clear memory:");
for e in &errors {
eprintln!(" {e}");
}
return Err(anyhow::anyhow!("clear failed"));
}
Ok(())
}
View on GitHub (pinned to bc7f02eddd)
Solutions
- Check stderr directly above the error: each failing target prints "label: <underlying error>"; fix the cause listed there.
- Fix file permissions on the memory directory/files (chown/chmod) so the clear closures can delete them.
- Close other processes using the memory store and retry.
- Run with the specific scope/target so the failure is isolated, and verify disk space/IO health.
Defensive patterns
Strategy: try-catch
Validate before calling
fn clearable(t: &ClearTarget) -> bool {
t.path.exists() && std::fs::metadata(&t.path).map(|m| !m.permissions().readonly()).unwrap_or(false)
}
// skip or warn on targets that exist but aren't writable before calling the clear command Try / catch
// the error is a generic summary; capture stderr for the real causes
match memory_clear_run(...) {
Err(e) if e.to_string() == "clear failed" => {
eprintln!("all memory targets failed to clear; see per-target errors above");
// fall back to manual cleanup: delete the listed memory files yourself
}
Err(e) => return Err(e),
Ok(()) => {}
} Prevention
- Run the clear command as a user with write access to the memory directory.
- Close other sessions/processes that may lock the memory store.
- Check filesystem writability (and disk space) in containers/CI before clearing.
- Read the per-target stderr lines; they identify the exact failing scope.
When it happens
Trigger: Invoking the memory clear command where at least one target exists but every target's (t.clear)(storage) call fails — e.g. storage backends erroring, permission denied on memory files, lock/IO failures — with zero targets succeeding.
Common situations: Read-only filesystem or files owned by another user; corrupted memory storage; another process holding the memory store; running clear in an environment (container/CI) without write access to the memory directory.
Related errors
- unmount {}: {err}
- Not a directory: {path}
- bind {}: {e}
- Failed to create agent config: {e}
- Failed to set working directory to {:?}: {}
AI-assisted analysis of xai-org/grok-build@bc7f02eddd (2026-08-31).
Data as JSON: /api/errors/30d7ea62b5080026.
Report an issue: GitHub.