Files
intelligence-terminal/docs/security-review.md
MrSphay 8605d0baab
All checks were successful
Release Dry Run / release-dry-run (push) Successful in 9s
Codex Template Compliance / template-compliance (push) Successful in 6s
Build / test-and-image (push) Successful in 19s
docs: sync issue tracker and handoff
2026-05-17 13:24:21 +02:00

1.7 KiB

Security Review

Checked Areas

  • Shell execution: browser auto-open is gated by AUTO_OPEN_BROWSER and defaults to false.
  • Secrets: .env remains ignored; .env.example contains no real keys.
  • External network calls: source fetches use timeout/retry diagnostics and expose degraded state.
  • Manual actions: /api/sweep and /api/action are gated by TERMINAL_ACTIONS_ENABLED and local-only or SWEEP_TOKEN authorization.
  • File writes: runtime writes are limited to runs/.
  • HTML injection: dashboard data is JSON-injected only by the CLI path; server mode serves data through API/SSE.

Terminal Actions

  • TERMINAL_ACTIONS_ENABLED=true enables dashboard-triggered status, sweep, and brief actions through POST /api/action.
  • If SWEEP_TOKEN is set, callers must send the token through x-sweep-token, Authorization: Bearer ..., or the token request body field.
  • If SWEEP_TOKEN is empty, actions are accepted only from local loopback addresses.
  • For private Dockge/LAN deployments, this is intended to make the terminal operable from the browser.
  • For Pangolin or other internet-exposed deployments, set SWEEP_TOKEN or TERMINAL_ACTIONS_ENABLED=false until the public reverse-proxy hardening issue is completed.

Residual Risk

  • External feeds can return malformed, stale, or adversarial content. UI rendering should continue to sanitize titles and URLs.
  • LLM outputs are advisory only and must not be treated as financial advice.
  • node:sqlite availability depends on the Node 22 build; when unavailable the memory database degrades to a no-op placeholder.
  • Browser-stored sweep tokens are acceptable for a trusted home-server UI, but should not be treated as a strong auth boundary on a public endpoint.