Skip to content

Data handling

  • The model provider you configure, and nothing else. With openai-compatible pointed at a local server, prompts and tool output never leave the machine. With anthropic, or an openai-compatible baseURL on a remote host, the conversation goes there. /status shows the active endpoint and flags whether it’s local.
  • web_search sends your query to the configured search backend (DuckDuckGo by default). /status shows which. In manual mode each search prompts; to block it, add "web_search" to permissions.deny.
  • The only other outbound request is a version check against the npm registry on startup - it sends nothing about your session, and runs even when autoUpdate is false. It fails silently offline.

See Running offline for the full lockdown.

Path Contents
sessions/<id>.jsonl Full transcript - every user message, assistant reply, and tool result, in plaintext.
plans/*.md Every plan proposed via exit_plan_mode.
settings.json Your config (may contain an apiKey).

Set once in settings.json / env / a launch flag - not toggleable mid-session, so a running session can’t lower its own guarantees.

  • persistTranscripts: false (or POLYGLOT_NO_PERSIST=1, or --no-persist) - ephemeral: nothing is written to sessions/ or plans/. --resume still works within the same process; once it exits there’s nothing to resume.
  • retentionDays: <n> (or POLYGLOT_RETENTION_DAYS) - on startup, delete transcripts and plans older than n days. Unset = kept indefinitely.

Polyglot deliberately does not encrypt its own files. A key stored on the same disk adds little against an attacker who can already read your home directory (where your API key and SSH keys also live), and it breaks cat / grep / --resume. For a regulated setup the effective controls are full-disk encryption + a local model + persistTranscripts: false or a short retentionDays.