Documentation

Security

Understand the sandbox, credential boundaries, and data exposure limits.

On this page

Trust boundary

Treat the pull request author, text, code, repository files, and agent output as untrusted. The operator, base-branch config, database, GitHub App key, and Docker daemon are trusted.

Prompt boundaries and read-only tools reduce risk. They do not prove that a model will ignore hostile instructions. Read-only files do not stop a process from executing code or sending network requests.

Sandbox controls

ControlValue
Root filesystemRead-only
User10001:10001
Linux capabilitiesAll dropped
Privilege escalationno-new-privileges
Resources512 processes, 4 GiB memory, 2 CPUs
Repository and inputs/repo:ro and /input:ro
Result directory/output:rw
Temporary files and agent homeSeparate 512 MiB tmpfs mounts with nosuid,nodev

Credentials and checkout

The API checks webhook HMAC SHA-256 before parsing or recording an event. The worker creates a token scoped to one repository. Git receives it through environment config, not a URL or command argument.

The worker removes .git before starting the agent. It does not fetch submodules. Repository symlinks become plain text files. The sandbox receives no GitHub token, App key, Docker socket, or dashboard secret.

The worker redacts known passed secrets of at least eight bytes before storage. This covers exact strings. It does not cover encoded, split, transformed, or unknown secrets.

Finding validation

Findings must use normalized paths from the reviewed diff. Inline comments need RIGHT-side lines. A multiline range must stay in one hunk. Other valid findings move to the summary.

CroCode escapes HTML, disables Markdown images, breaks mentions, removes control characters, and limits output length. It removes previously published finding fingerprints.

Ordinary links remain. Check their destinations before following them. Sanitization is not complete data-loss prevention. A person must review suggested patches.

Host and network isolation

  1. Use a dedicated host or Docker daemon. Give socket access only to the worker.
  2. Keep host credentials and unrelated data off that host.
  3. Use a private work directory and a filesystem disk quota.
  4. Put sandboxes on a dedicated network. Deny direct egress and allow model traffic through a restricted proxy.
  5. Check an allowed provider connection and a blocked destination before use.

Choosing a Docker network does not create firewall rules. A read-only worker UID does not remove Docker socket risk. An optional runsc runtime requires separate installation and testing.

Known limits

The worker removes completed reviews after 30 days. It removes deleted installations’ reviews on its next cleanup pass. Cleanup runs once per minute and removes findings and patches too. Active jobs remain unless their installation is deleted. Protect the database and its backups as source-code data. Backups and GitHub reviews need a separate retention policy. A host crash can leave checkout files behind.

Cancellation can take until the next heartbeat. The installation concurrency cap is soft. A crash between GitHub publication and its database update can cause a duplicate review on retry.

Read the full security model for verification results and dependency advisories.