Please do not open a public GitHub issue for security vulnerabilities.
Instead, create a GitHub Security Advisory with:
- A description of the vulnerability
- Steps to reproduce
- Potential impact
- Any suggested mitigations
You will receive an acknowledgement within 48 hours and a status update within 7 days.
All API endpoints require a bearer token (Authorization: Bearer tfa-...).
- Tokens are 160-bit random values (
crypto/rand) prefixed withtfa- - Only the SHA-256 hash of the token is stored in the database — the raw token is shown once and never retrievable
- Tokens can be revoked (hash cleared, account deactivated) or rotated by an admin at any time
Two roles: admin and member.
- Members can only access their own tasks and settings
- Admins can manage all users via
/v1/admin/*endpoints - Self-action guards prevent an admin from deleting or deactivating their own account
Per-user GitHub and Atlassian tokens are encrypted at rest using AES-256-GCM before being written to the database. The encryption key is derived from ENCRYPTION_KEY in the server environment.
The agent runs with a configurable permissions policy (config.toml → permissions.default):
| Policy | Behaviour |
|---|---|
auto |
All non-destructive tool calls proceed automatically |
confirm |
Destructive tool calls require explicit approval |
deny |
Destructive tool calls are blocked |
Tools declare IsDestructive() and IsReadOnly() — the permission checker enforces policy based on these.
Sub-agents spawned by the Agent tool receive a restricted tool subset based on their role. The security-auditor and reviewer roles are read-only. The coder and tester roles have write and Bash access but cannot call external APIs.
- The server listens on
localhost:8080by default — do not expose directly to the internet without a TLS-terminating reverse proxy - CORS is not enabled; the bundled SPA is served from the same origin
- The PostgreSQL database is not encrypted at rest beyond the column-level AES-256-GCM for token fields — protect the database with filesystem permissions and network access controls
- Bash tool execution is sandboxed only by OS-level user permissions; run the server as a least-privilege user