Threat model: single trusted user on their own machine, server bound to loopback. AgentCue refuses to start on a non-loopback host — there is no authentication layer, by design, until one exists.
- Loopback-only binding enforced at startup; TrustedHost + Origin/
Sec-Fetch-Sitechecks against DNS-rebinding/CSRF; request body size cap. writefilenodes are contained to the user's home root viaresolve().relative_to()(no substring tricks).shellnodes refuse{{results}}template interpolation — upstream data cannot flow into command strings.fetchnodes resolve the host and reject loopback/private/link-local/reserved addresses, and do not follow redirects.- Approval gates default to undecided; timeout means deny; decisions are single-writer (first response wins, enforced at the SQLite layer) and audited.
ANTHROPIC_API_KEYis stripped from child environments so subscription CLIs don't silently switch to API billing.
Documented deliberately rather than hidden — pull requests welcome:
- No auth. Any local process can call the API. Loopback binding is the boundary.
- Prompt injection: content fetched from the web / files / issue text flows into agent prompts. When you enable "allow tools", you are trusting that content. Keep allow-tools off for flows that ingest untrusted input.
- Child env: apart from
ANTHROPIC_API_KEY, child processes inherit your environment (an allowlist is planned). readfilenodes can read any file your user can — treat flow definitions as trusted config.- Frontend uses inline handlers with manual escaping; a CSP/refactor is planned.
- Flow-node agents are not covered by the global spawn semaphore yet — a runaway flow can spawn many CLI processes.
- Windows is the primary platform; health scan / session relaunch are Windows-only today.
Report issues via GitHub Issues.