Skip to main content

Security Model

Crux enforces a layered security model to constrain agent actions. Every agent runs within a permission tier, a filesystem sandbox, and under rate limits.

Permission Tiers

Four tiers control what each agent can do:

TierFile WriteShell CommandsNetworkGit Push
readonlyNoNoNoNo
standardScoped pathsAllowlistedNoNo
elevatedProject rootMost commandsLocalhostFeature branches
autonomousProject rootAll non-destructiveYesFeature branches

Assign a tier in your agent configuration:

agents:
orchestrator:
plugin: claude
role: orchestrator
permission: elevated
engineer-1:
plugin: claude
role: engineer
permission: standard

Filesystem Sandbox

The sandbox restricts file operations to configured paths:

  • Allowed paths: by default, the project root
  • Denied paths: sensitive files like .crux/secrets.env, .git/
  • Path validation uses filepath.Rel to prevent directory traversal
security:
allowed_paths: ["."]
denied_paths: [".crux/secrets.env", ".git/"]

Audit Logging

Every agent action is logged to .crux/audit.log as structured JSON:

  • Commands executed
  • Files modified
  • Messages sent and received
  • Gate results (pass/fail)
  • Security violations (blocked actions)

View the audit log:

crux audit list --since 1h
crux audit stats

Rate Limiting

Per-agent caps prevent runaway execution:

security:
max_cmds_per_min: 60
max_files_per_session: 100

When an agent exceeds the limit, further commands are blocked until the window resets. The blocking event is recorded in the audit log.

Git Safety

All agent commits land on feature branches (crux/<agent-id>/<task>). Merging to main requires human review, so no agent can directly modify the main branch.