Skip to content

Security: spice-framework/spice-agent-tools-coding

SECURITY.md

Security policy

Report vulnerabilities privately through GitHub Security Advisories for this repository. Do not include secrets, proprietary source, or command output in a public issue.

These tools intentionally run with the operating-system user's filesystem, process, network, secret, and environment privileges. They do not provide a sandbox or approval prompt. The first-run and help surfaces must prominently disclose that fact. Capability metadata is descriptive and supports future policy interception; it is not a security boundary. A shell starts in a validated worktree directory but can subsequently access any user-authorized resource.

Read and replace operations use Go's traversal-resistant os.Root. Replace serializes calls per tool instance, rejects symbolic-link targets, writes and syncs a same-directory temporary file, rechecks the expected digest immediately before commit, and uses atomic replacement or no-overwrite hard-link creation. An external same-user writer can still race the final check and commit because the portable filesystem contract has no conditional compare-and-swap primitive.

Shell uses discrete argv, rejects symbolic-link workdir components, revalidates them immediately before launch, and inherits only configured environment names. The consuming application injects the public executable resolver and process launcher; this module contains no platform launcher. Every non-nil returned process is retained immediately and ownership is released only after typed Wait success. managed_cleanup_completed confirms that join, not containment of resources the platform launcher never owned. Incomplete managed cleanup after start returns a direct uncertain, never-replayable execution failure rather than model-visible output. Output is bounded and truncation is explicit.

File contents, command arguments, inherited environment values, process output, and raw reporter/operating-system failure chains must not enter general diagnostics. Only canonical caller cancellation/deadline identity is preserved through errors.Is. Tool call/result events may contain the model-requested arguments and bounded result by design, so callers must not place secrets in argv or file content.

Supported versions receive fixes on the latest preview line until a stable support policy is published.

There aren't any published security advisories