Skip to content

What's new

The short version of each release, written for people who use Polyglot rather than read its source. The full changelog on GitHub has every entry, including internal fixes.

polyglot updates itself in the background when autoUpdate is on; otherwise npm install -g @usepolyglot/cli (or your package manager’s equivalent) pulls the latest.


Replay a saved session. polyglot replay <id|path> re-runs a session against the current build and shows where it diverges from what was recorded - which tool calls resolve differently now, which repairs are no longer needed, whether a since-released fix would have helped. By default it just re-resolves the recorded model output (deterministic, no execution); --execute --seed <dir> re-runs the whole agent loop against a snapshot of your files. --output-format json for scripting; --save turns the session into a regression test. Handy when a local model breaks on something and you can’t tell whether it’s the model or Polyglot.


Remote MCP servers. An mcpServers entry can now give a url instead of a command. Polyglot connects over the current Streamable HTTP transport and falls back to legacy HTTP+SSE when a server only speaks that; headers carry auth, with ${VAR} read from the environment so tokens stay out of settings.json. MCP servers also connect in parallel now, each with a 10-second timeout, so a slow or unreachable one no longer holds up startup.

Dependency modernization. zod 4, openai 7, glob 13, ink 7 / react 19, and chalk dropped entirely - no behaviour change, and a few moderate pnpm audit advisories cleared along the way.


Secret & PII scanning. Every tool result - shell output, file reads, web fetches, MCP tools - is now scanned for secret-looking values (API keys, tokens, private keys) before it reaches the model, and flagged in the transcript and the audit log. On by default in warn mode; set redaction.mode: "redact" to strip them, redaction.pii: true to add email/SSN/card detection. This is content-based and complements the existing path-based prompting for secret-named files.

Hooks. A hooks block in settings.json runs your own shell commands at three points: preToolUse (block a tool call), postToolUse (block a result), and userPromptSubmit (block a prompt or add context to it). Exit 2 blocks; optional stdout JSON gives structured control. Hooks in a project’s settings file are off unless the global config sets hooks.allowProjectHooks: true.


File mentions. Type @ in the input for a fuzzy-search list of the project’s files; on send, each @<path> is replaced with the file’s contents inline, so the model has it without a read_file call. The list respects .gitignore; secret files are never inlined. Works in -p mode too.

Agent definitions. Drop a .polyglot/agents/<name>.md - frontmatter for the description, an optional tool allowlist, an optional model; the body is the system prompt - and run it with @name <task> at the start of a message. It runs as a one-shot sub-agent with only its allowed tools and streams its result. The model can also delegate to one on its own through an agent_<name> tool. /agents lists them.

Skills. Put a focused instruction bundle at .polyglot/skills/<name>/SKILL.md and switch it on for the session with @name - its guidance is added to the system prompt until /skill off. Bundled files sit alongside SKILL.md and the model reads them on demand. Same SKILL.md layout as Claude Code, so skills are portable. /skills lists them.


Model failover. Configure a routing.failover list and, when the active model errors out or stops producing valid tool calls mid-turn, the turn continues on the next model instead of stopping. The switch is sticky for the session and shown in the transcript; /model puts you back. Point a local model at a hosted one (or the reverse) and you keep working through an outage on either side.

Dedicated models for compaction and planning. routing.summaryModel runs /compact on a cheaper model; routing.planModel runs plan-mode turns on a model of your choice.

Cheaper sub-agent model. Set subAgentModel and task sub-agents run on it instead of inheriting the parent’s model - delegated grunt work doesn’t need your best model. Sub-agent token cost now shows up in /cost as its own line.

Share a session. polyglot share <id> exports a transcript to Markdown or a standalone HTML file, with secret-looking values scrubbed by default, for pasting into a PR or a bug report. --resume now also accepts a path to a .jsonl session file, so a session can be handed between people.

Per-model reliability. A running tally of how each model is doing at tool calls this session - calls made, repairs needed, parse failures, give-ups - shown in /status, the new /reliability command, and next to each model in the /model picker (“92% clean this session”). The status bar flags trouble once there is any.

Prompt caching (Anthropic). The system prompt is marked cacheable, so from the second turn of a session it’s served from cache at roughly a tenth of the input-token price. /cost reflects the discount automatically - nothing to configure.


First-run setup. Running polyglot with no config now launches an interactive polyglot init wizard instead of exiting with an error.

Project instructions. Polyglot reads AGENTS.md / POLYGLOT.md from your repo (and ~/.polyglot/ for global rules) and prepends them to the system prompt - standing context like build commands and conventions. AGENTS.md is the cross-tool standard, so a repo set up for another agent already works.


Repairs are visible. When Polyglot fixes a malformed tool call from a weak model, the card shows a ↺ repaired marker; Ctrl+R / /raw show the model’s verbatim output; /reliability keeps a per-model tally. A parser fix can no longer quietly mask a model getting worse.


Older releases: see the full changelog.