Workspace Trust
Workspace trust is a security feature that prevents untrusted project code from executing automatically. When you open a repository that contains project plugins, tools, or local MCP servers, Arcana requires explicit trust before loading that code.
Why Workspace Trust?
Projects can include:
- Project plugins — JavaScript/TypeScript modules that extend Arcana
- Project tools — Custom tools available to the agent
- Local MCP servers — Model Context Protocol servers defined in the project
These can execute arbitrary code on your machine. Workspace trust ensures you explicitly approve each project before Arcana runs its code.
Trusting a Workspace
In the project directory, run:
arcana trust
This records a fingerprint of the workspace (based on the git remote URL and current branch) in ~/.arcana/data/workspace-trust.json. Arcana will then load project plugins, tools, and MCP servers from that workspace.
How It Works
- Fingerprinting — When you run
arcana trust, Arcana records the git remote URL and branch as a trusted fingerprint. - Verification — On subsequent sessions in that workspace, Arcana checks if the current workspace matches a trusted fingerprint.
- Blocking — If the workspace is not trusted, project plugins, tools, and local MCP are disabled.
Environment Variables
| Env var | Description |
|---|---|
ARCANA_DISABLE_WORKSPACE_TRUST=1 | Skip trust checks (development only) |
ARCANA_TRUST_WORKSPACE=1 | Force-trust for CI environments |
Trust Data
Trust fingerprints are stored in:
~/.arcana/data/workspace-trust.json
You can manually edit this file to remove trusted workspaces, or use the CLI:
# View trusted workspaces
arcana trust --list
# Remove trust for current workspace
arcana trust --remove
Best Practices
- Only trust repositories you control — Don't trust random repos you clone.
- Review before trusting — Check what plugins/tools/MCP servers the project defines before running
arcana trust. - Use CI trust for automation — Set
ARCANA_TRUST_WORKSPACE=1in CI pipelines where you need project plugins. - Keep trust scoped — Trust is per-branch by default. Different branches of the same repo require separate trust.