zeroclaw-labs/zeroclaw · error · anyhow::Error
Screenshot path '{ $path }' is not in the workspace allowlis
Error message
Screenshot path '{ $path }' is not in the workspace allowlist What it means
Error "Screenshot path '{ $path }' is not in the workspace allowlist" thrown in zeroclaw-labs/zeroclaw.
Source
Thrown at crates/zeroclaw-tools/src/browser.rs:864
/// 6. Rejects canonical destinations that are not valid UTF-8.
///
/// Shared by the local backends (`validate_screenshot_path`) and the
/// ComputerUse flow (`validate_screenshot_path_for_computer_use`) so one
/// policy cannot drift between them.
///
/// Returns the validated target as a lossless UTF-8 string. Every backend
/// consumes the destination as a string (command argument, JSON value, or
/// `tokio::fs::write(&str)`), so a canonical destination that is not valid
/// UTF-8 is rejected here: a lossy conversion could change the pathname and
/// name a location that never passed the allowlist.
async fn validate_screenshot_target(&self, raw_path: &str) -> anyhow::Result<String> {
// String-level reject (null bytes, .. traversal, URL-encoded traversal)
if !self.security.is_path_allowed(raw_path) {
let msg = crate::i18n::get_required_tool_string_with_args(
"tool-browser-screenshot-error-path-not-allowed",
&[("path", raw_path)],
);
anyhow::bail!("{msg}");
}
// Resolve relative / tilde paths against the workspace directory.
let full = self.security.resolve_tool_path(raw_path);
// The file does not exist yet, so canonicalize the *parent* directory
// to verify it is inside the workspace allowlist.
let parent = full.parent().unwrap_or(&full);
let canonical = tokio::fs::canonicalize(parent).await.with_context(|| {
crate::i18n::get_required_tool_string_with_args(
"tool-browser-screenshot-error-parent-not-exist",
&[
("path", raw_path),
("parent", &parent.display().to_string()),
],
)
})?;
View on GitHub (pinned to 88bb9c8533)
Solutions
- Save the screenshot to a path inside the workspace allowlist.
When it happens
Trigger: Thrown at crates/zeroclaw-tools/src/browser.rs:864 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of zeroclaw-labs/zeroclaw@88bb9c8533 (2026-08-23).
Data as JSON: /api/errors/b84ab62caa11c89b.
Report an issue: GitHub.