zeroclaw-labs/zeroclaw · error · anyhow::Error

Screenshot path '{ $path }' resolves to '{ $canonical }' whi

Error message

Screenshot path '{ $path }' resolves to '{ $canonical }' which is outside the workspace

What it means

Error "Screenshot path '{ $path }' resolves to '{ $canonical }' which is outside the workspace" thrown in zeroclaw-labs/zeroclaw.

Source

Thrown at crates/zeroclaw-tools/src/browser.rs:891

        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()),
                ],
            )
        })?;

        if !self.security.is_resolved_path_allowed(&canonical) {
            let msg = crate::i18n::get_required_tool_string_with_args(
                "tool-browser-screenshot-error-path-outside-workspace",
                &[
                    ("path", raw_path),
                    ("canonical", &canonical.display().to_string()),
                ],
            );
            anyhow::bail!("{msg}");
        }

        // Build the final *target* path (parent + file name) so we can apply
        // the same target-level guards the file_write / file_edit tools use.
        let Some(file_name) = full.file_name() else {
            let msg = crate::i18n::get_required_tool_string_with_args(
                "tool-browser-screenshot-error-missing-filename",
                &[("path", raw_path)],
            );
            anyhow::bail!("{msg}");
        };
        let resolved_target = canonical.join(file_name);

        if self.security.is_runtime_config_path(&resolved_target) {
            let msg = crate::i18n::get_required_tool_string_with_args(
                "tool-browser-screenshot-error-runtime-config-target",
                &[
                    ("path", raw_path),

View on GitHub (pinned to 88bb9c8533)

Solutions

  1. Use a screenshot path that resolves inside the workspace; remove symlinks/traversal pointing outside.

When it happens

Trigger: Thrown at crates/zeroclaw-tools/src/browser.rs:891 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/c931e530552c6f7e. Report an issue: GitHub.