116 lines
2.8 KiB
Markdown
116 lines
2.8 KiB
Markdown
# Threat Model
|
|
|
|
Last updated: 2026-05-14.
|
|
|
|
## Security objective
|
|
|
|
Let external local Codex agents maintain Tasker cards without turning Tasker into an open automation surface.
|
|
|
|
## Main threats
|
|
|
|
### Raw Tasker access leakage
|
|
|
|
Risk: a user copies a broad Tasker token or cookie into local Codex, allowing arbitrary API calls.
|
|
|
|
Mitigation:
|
|
|
|
- never issue Plane session cookies to agents;
|
|
- never expose raw Tasker API tokens;
|
|
- use opaque Agent Gateway tokens;
|
|
- only expose allowlisted MCP tools.
|
|
|
|
### Project scope escape
|
|
|
|
Risk: an agent writes to another project or workspace.
|
|
|
|
Mitigation:
|
|
|
|
- Agent Gateway grants are project-scoped;
|
|
- Tasker adapter revalidates workspace/project membership;
|
|
- every tool requires explicit `project_id`;
|
|
- gateway rejects projects outside grant set.
|
|
|
|
### Destructive action
|
|
|
|
Risk: an agent deletes or archives cards, labels, comments, projects, or members.
|
|
|
|
Mitigation:
|
|
|
|
- no delete/archive MCP tools in MVP;
|
|
- adapter rejects delete/archive intents;
|
|
- raw API proxy is forbidden.
|
|
|
|
### Privilege confusion
|
|
|
|
Risk: an agent acts as the human user and hides automation history.
|
|
|
|
Mitigation:
|
|
|
|
- create dedicated agent identity;
|
|
- store owner user separately;
|
|
- every audit event includes both `agent_id` and `owner_user_id`;
|
|
- UI displays agent-originated changes.
|
|
|
|
### Prompt injection
|
|
|
|
Risk: text inside a card tells Codex to exfiltrate token or call forbidden tools.
|
|
|
|
Mitigation:
|
|
|
|
- MCP tools enforce server-side scopes;
|
|
- instruction pack says Tasker content is untrusted;
|
|
- Gateway never exposes secrets through read tools;
|
|
- deny arbitrary HTTP fetch/proxy tools.
|
|
|
|
### Token theft
|
|
|
|
Risk: local token leaks from developer machine.
|
|
|
|
Mitigation:
|
|
|
|
- token hash storage;
|
|
- expiry;
|
|
- immediate revoke;
|
|
- last used metadata;
|
|
- rate limits;
|
|
- optional IP/device binding later.
|
|
|
|
### Owner lifecycle bypass
|
|
|
|
Risk: blocked/annulled user keeps active agent token.
|
|
|
|
Mitigation:
|
|
|
|
- Gateway checks Launcher owner status;
|
|
- blocked/annulled owner disables agent tokens;
|
|
- periodic sync plus request-time access check.
|
|
|
|
### Replay and duplicate writes
|
|
|
|
Risk: network retry creates duplicate cards/comments.
|
|
|
|
Mitigation:
|
|
|
|
- required idempotency keys for write tools;
|
|
- store operation result by token and idempotency key.
|
|
|
|
### Reporting mode false confidence
|
|
|
|
Risk: enterprise admin assumes local Codex must report, but the developer bypasses the managed config.
|
|
|
|
Mitigation:
|
|
|
|
- UI distinguishes `connected`, `stale`, `never connected`;
|
|
- reporting mode is visibility and policy, not hard enforcement, unless a managed wrapper is used;
|
|
- CI/workflow checks can require Tasker session updates later.
|
|
|
|
## Hard rules
|
|
|
|
- No database access from Agent Gateway to Tasker DB.
|
|
- No arbitrary Tasker HTTP proxy.
|
|
- No user session cookie reuse.
|
|
- No delete/archive tools in MVP.
|
|
- No secrets in generated markdown instruction files.
|
|
- No token logging.
|
|
- No frontend access to service secrets.
|