Skip to content

Changelog

Polytoken 0.6.2 adds a custom Responses API provider option, protects session environment variables, fixes Anthropic stream wedging, and improves TUI recovery and configurator behavior.

  • Added an option for a custom Responses API provider.
  • Fixed a case where Anthropic streams would get wedged due to empty thinking signatures.
  • Added a recovery path for SSE events in the TUI when they get a bit sad.
  • You can now set POLYTOKEN_DISABLE_FEEDBACK=1 to hide the /feedback command.
  • All environment variables captured at session start are now protected from unsetting in shell_exec.
  • Held-key auto-repeat acts a little more gracefully.
  • When the autonomous classifier errors, you’ll now see a flash message saying so (while still falling back to human asks).
  • File tools now follow directory symlinks, so long as the origin was within the project root.
  • flag_important now works relative to the cwd stack, so you can flag files after pushd.
  • Custom Chat Completions providers no longer show (ignored) reasoning effort.

Polytoken 0.6.1 fixes a bug in parsing inference streams for classifiers.

  • Fixed a bug in parsing inference streams for classifiers (autonomous permissions and title generation).

Polytoken 0.6.0 adds per-model request options across the system, a DeepInfra provider, and fixes for empty provider responses, session reattach reliability, and DeepSeek V4 Flash in subagents.

  • Models now support request options. They are supported across the system. A fully-qualified model string looks like codex/gpt-5.6-luna(high)[service_tier=priority].
  • /model-option (or clicking on the model name in the sidebar) lets you change these on-the-fly.
  • Added DeepInfra provider.
  • Some readability improvements when switching models.
  • You can now switch permissions modes from within a permissions request prompt.
  • Fixed bugs around empty provider responses to user prompts.
  • Reattaching to a session now retries through transient transport errors.
  • Scrolling works in conversations longer than 65,000 rows. (Oops.)
  • Fixes to DeepSeek V4 Flash (multiple providers) when used in subagents. (V4 Flash still has issues when used as an autonomous classifier. We’re working on it.)
  • Completed goals fully clear goals from agent context.
  • Fixed some annoying bugs in the config UI.

Polytoken 0.5.10 improves compaction reliability, fixes the self-updater on Linux, improves Azure OpenAI compatibility, and resolves TUI freezing and startup performance issues.

  • Compaction now retries if too close to the end of the context window.
  • polytoken update now correctly re-launches on Linux.
  • OpenAI and Codex providers adjusted to support Azure more effectively.
  • When a subagent fails to launch, the model now receives guidance to help it retry.
  • Markdown rendering fixes: links inside emphasis display correctly, bare URLs in emphasis are clickable, and inline links no longer show a trailing URL suffix.
  • Fixes to TUI freezing during very long autonomous sessions.
  • Startup in very deep, very large directories (home directories) should be faster.
  • Jobs viewer subagent scrolling is now cached better.
  • Fixed a bug that bricked sessions on resume.
  • Fixed regressions in shell_exec behavior and notifications in subagents.
  • DeepSeek provider/model fixes to support deepseek-v4-flash-0731.
  • It’s now legal to set a mini model as a full model (config.yaml only).

Polytoken 0.5.9 adds shell tool backgrounding, fixes OpenTelemetry export, and resolves several session crashes.

  • shell_monitor can now be backgrounded.
  • shell_exec is more easily backgrounded by models.
  • Ctrl+B or /bg-shell will send the currently-running shell_exec or shell_monitor to background.
  • OTel now, uh, works.
  • Provider URLs with a trailing slash now work.
  • Interrogative prompts don’t get lost behind the jobs or todo viewer.
  • Removed legacy pedagogy system. Sad. It was fun.
  • Fixed a couple of session-disconnection crashes.

Polytoken 0.5.8 fixes a bug that could drop environment variables after shell commands, adds conversation scrolling shortcuts, and improves paste handling across text inputs.

  • Environment variables such as PATH and HOME no longer disappear after running shell commands that produce a partial environment snapshot.
  • You can now scroll the conversation with Shift+PageUp, Shift+PageDown, Shift+Home, and Shift+End from anywhere in the interface.
  • Custom Anthropic-compatible providers can now use prompt caching through a new cache_control_strategy config option.
  • Large pastes into clarification prompts and the feedback form now collapse into a compact marker, matching the prompt input.
  • The interactive configurator now supports configuring OpenTelemetry trace export settings.

Polytoken 0.5.7 adds OpenTelemetry trace export, improves cache-miss detection accuracy, and lets you rewind across compaction boundaries.

  • Polytoken can now export trace data to an OpenTelemetry collector using the OTLP protocol, following GenAI semantic conventions. Telemetry is opt-in and disabled by default. Configure it through a telemetry block in your global config.
  • The prompt-cache-miss warning is more accurate and no longer triggers false alerts.
  • You can now rewind to before a compaction or clear boundary, removing the boundary card and everything after it.
  • Selecting an MCP server for OAuth authentication now targets the correct server instead of always using the first.
  • Polytoken now warns you when stored OAuth credentials already exist for an MCP server before starting a new authorization.
  • The configurator exit dialog now offers a Save and quit option when you have unsaved changes.
  • The collapsed compaction card now shows the continuation prompt size.

Polytoken 0.5.6 makes session titles more reliable, recovers stalled subagents, warns on prompt-cache misses, and fixes several terminal UI issues.

  • Session titles now fall back to your first message when the title model keeps failing.
  • Stalled subagent provider streams now recover automatically, including those that happen while your computer sleeps.
  • You now see a status-line warning when a large session loses its prompt cache.
  • The prompt you are typing is preserved when you switch facets.
  • Repeated MCP lifecycle notifications during a reconnect cycle now collapse into a single updating card.
  • The context meter no longer shows a stale value briefly after /clear.
  • polytoken validate subagent now checks the global configuration directory for definitions.

Polytoken 0.5.5 fixes subagent reasoning-level support and improves compaction context scaling.

  • Subagent frontmatter now properly supports reasoning levels for selected models.
  • Agent compaction has improved, with size/detail scaling with context window size.

Polytoken 0.5.4 adds Claude Opus 5, shows hook output during active sessions, and fixes terminal UI and clipboard issues.

  • Claude Opus 5 is available in the Anthropic model catalog with a 1 million token context window and effort-based thinking controls.
  • Hook output text is now visible during the running session when a hook allows, blocks, or denies an action, instead of only appearing after you reattach.
  • When a session attach conflict occurs, the error message now suggests polytoken new so you can start a fresh session when your current one is busy.
  • The active plan file path no longer resets incorrectly after a daemon restart or session resume.
  • Pressing Escape twice no longer cancels a pending compaction by accident. A confirmation prompt now requires a deliberate second press within a short window.
  • The compaction card count no longer overcounts when earlier compaction events were cancelled or failed.
  • Long text in the feedback editor now wraps instead of scrolling off-screen. The phantom cursor is fixed, and pasted text now goes to the feedback modal instead of leaking to the prompt.
  • The cursor is now visible when editing a handoff plan refusal.
  • Clipboard copy now works correctly inside tmux.

Polytoken 0.5.3 improves reliability of compaction, tool calls, and provider error handling.

  • Tool arguments are now type-coerced for unambiguous mismatches before schema validation.
  • Compaction now retries with backoff instead of failing on the first error.
  • Provider errors that Polytoken does not recognize now show the original error text from the provider instead of a generic message, so you can diagnose the cause.
  • Added polytoken.compaction_hint facet frontmatter for controlling compaction prompt guidance.
  • Fixed a bug where pressing Escape during a goal-driven session caused the goal to re-iterate instead of pausing.

Polytoken 0.5.2 eliminates session-length-dependent latency in the TUI and daemon.

  • Eliminated session-length-dependent rendering latency. Long sessions no longer cause progressively slower prompt acceptance, scrollbars, or tool-call rendering.

Polytoken 0.5.1 adds a built-in self-updater, deprecates the Homebrew tap, and fixes MCP and provider compatibility issues.

  • Added polytoken update for self-updating. Checks for new versions at launch (once per 24 hours) and prompts to install. Disable with updates.automatic_check: false.
  • Deprecated the Homebrew tap. New installs should use curl -fsS https://get.polytoken.dev | bash; the tap will be decommissioned in a future release.
  • Changed the installer to download the bare binary directly instead of a zip archive, eliminating the unzip dependency on minimal Linux systems.
  • Added MCP server keepalive ping to prevent timeout during long sessions.
  • Fixed Kimi K3 tool-call errors when thinking mode was not explicitly enabled.

Polytoken 0.5.0 adds the Kimi Code and Moonshot providers, bearer-token authentication for the daemon, automatic crash reporting with a /feedback command, per-tier reasoning effort, and recent-message retention through compaction. It also introduces a message_subagent tool, subagent resumption from a prior job, atomic batch edits, global skill discovery, and broad improvements to the terminal UI, permissions, and providers.

  • Kimi Code is now available as a built-in provider. It uses the Anthropic Messages API, ships models including K3 with effort-based reasoning, and authenticates with an OAuth 2.0 device-code flow, so you can log in without an API key.
  • Moonshot AI joins the built-in providers with OpenAI-compatible Chat Completions and ships models including K3 with reasoning effort controls.
  • Both providers support vision and appear in the interactive configurator.
  • The daemon now requires a bearer token on its control API. The CLI sets this up automatically, so no configuration is required, and requests without a valid token receive HTTP 401. See Daemon authentication.
  • Polytoken now sends automatic crash reports when it exits unexpectedly. A report includes the crash type, a stack trace, the component name, the version, and a pseudonymous installation ID, but never your logs, session records, prompts, or files. The setting is on by default; turn it off with data.automatic_crash_reporting = false.
  • /feedback opens a form where you can message the team and optionally attach session logs to help diagnose a problem.
  • Each default model tier (:full, :mini, :nano) can carry its own reasoning effort. Add the effort level in parentheses after the model name in the defaults block, for example full: "claude-sonnet-4(high)". The configurator offers an effort selector when you assign a default model, warns when a tier requests an effort the model does not support, and falls back to the model’s default.
  • OpenAI reasoning models now show readable thinking summaries when the Responses API provides them.
  • GPT-5.6 Sol, Terra, and Luna join the built-in catalog for the OpenAI and Codex providers, all supporting low, medium, high, xhigh, and max reasoning effort. Sol and Terra are full-class models. Luna qualifies as a default for both the full and mini classes, and the configurator offers a class chooser when you assign a multi-class model as a default.
  • When a saved-session goal is active, ask_user_question no longer interrupts you with an operator prompt. Polytoken directs the model to pick an answer, seek a second opinion, or block the goal when it cannot proceed. Pausing the goal restores ordinary question prompts.
  • Compaction now preserves a budget of recent messages verbatim, sized to each model’s context window, so the model retains the immediate conversation alongside the summary.
  • Compaction summaries focus on recent completed tasks and tell the model how to retrieve older history when needed.
  • Bash hook handlers now receive POLYTOKEN_FACET_NAME, POLYTOKEN_MODEL_NAME, and POLYTOKEN_GOAL_ACTIVE alongside the existing POLYTOKEN_* variables. POLYTOKEN_FACET_NAME is the active facet, POLYTOKEN_MODEL_NAME is the active model’s config-key name, and POLYTOKEN_GOAL_ACTIVE is true or false depending on whether a saved-session goal is running.
  • Polytoken now discovers skills in ~/.agents/skills/ automatically.
  • MCP connections begin retrying sooner and keep trying longer, so transient outages recover more reliably.
  • polytoken models, polytoken sessions, and polytoken doctor accept --format human, --format json, --format json-pretty, and --format yaml.
  • polytoken openapi and polytoken event-schema accept --format json and --format yaml, while keeping pretty JSON as the default.
  • polytoken new --prompt <text> submits the given text as the session’s first prompt as soon as the TUI attaches. With --no-attach, it submits the prompt and exits without starting the TUI.
  • The message_subagent tool lets a parent session send a text message to a running subagent. The message arrives in the subagent’s context without interrupting its current step.
  • Use the subagent tool’s new resume_from parameter to continue a completed subagent’s work in a new job.
  • The hashline edit format now supports atomic batch edits: multiple edits in a single call apply together or not at all.
  • shell_exec now returns full execution context when a command fails, including persisted paths for the captured output.
  • In autonomous mode, tool calls that match an explicit allow rule now run immediately. Filesystem grants still require approval, and Polytoken still evaluates calls that match no explicit rule.
  • Polytoken now recognizes literal relative directories in cd commands and can suggest appropriate filesystem permission rules for them.
  • Permission rules now handle paths that safely resolve internal .. segments. Paths that escape through a leading .., such as ../secrets, remain blocked.
  • Plan handoff from the plan facet to execute now works in autonomous mode.
  • The @ file picker now accepts ./ to browse from the current working directory. For example, type @./ to browse the project root or the directory selected with pushd. Polytoken continues to hide files blocked by .agentblock.
  • Polytoken now includes Sean Edwards’s rose-pine.yaml theme.
  • Press Ctrl+Shift+B or use the corner button to collapse the context area in ask_user_question and handoff_plan prompts.
  • Provider error cards now show structured detail when expanded, with plain-language context and actionable guidance for each error type.
  • The context meter now stays stable during tool loops and reports the correct value after rewind, clear, or compaction.
  • Diagnostic output no longer corrupts the TUI or configurator.
  • Press Ctrl+Y in the Todo Viewer to copy the selected todo to your clipboard.
  • Ctrl-C during TUI startup now cleans up the daemon instead of leaving orphaned processes behind.
  • Modal text dialogs in the configurator now show Enter as the accept key instead of Ctrl+S.
  • Neuralwatt models now expose only the reasoning controls they support, with sensible defaults for models that offer optional reasoning.
  • Provider interruptions no longer silently discard partial responses; Polytoken preserves partial progress while recovering.
  • Custom models entries can now override selected settings on discovered models. Polytoken warns about overrides it cannot apply instead of rejecting the configuration.
  • Anthropic models now handle thinking text streams more reliably.
  • Polytoken now retries transient OpenAI server errors instead of ending a turn.
  • Kimi Code sessions now recover more reliably from temporary authentication failures and expired tokens.
  • Streaming renders faster in the TUI during long sessions.
  • Concurrent glob and grep calls are faster.
  • Long sessions stay responsive during file and compute-heavy work.
  • Session history no longer loses messages when you interrupt and resume a session.
  • Cancelling a response no longer makes later requests unnecessarily large or degrades response quality. Polytoken still preserves completed text and tool calls.
  • Polytoken now rejects empty and whitespace-only prompts instead of submitting them.
  • The TUI no longer crashes on ConPTY, WSL2, and Podman PTY chains; it redraws gracefully when a full clear fails.
  • Repeated invalid tool calls now end the session instead of looping indefinitely.
  • Sessions now recover when a provider rejects an oversized request. Session title generation is also more reliable across providers.
  • Permission checks no longer crash when you use reasoning-capable models.
  • Interrupting config edit no longer corrupts your configuration.
  • MCP servers now report expired authentication instead of disconnecting without an explanation.
  • You can now propose a new saved-session goal after the previous goal finishes.
  • User-level subagents now load from the global configuration directory.
  • Bare shell-interpreter commands such as bash, sh, zsh, or fish no longer trigger unsafe persistent permission suggestions.
  • Rewinding to an earlier prompt now restores @-reference shorthand instead of raw XML tags in the prompt textarea.
  • Subagent definitions can now reference dynamically discovered models, such as Umans models, without being falsely rejected.

Polytoken 0.4.2 fixes a bug where cancelling a provider stream could permanently bloat every subsequent request.

  • When you cancel a provider stream mid-response, Polytoken now drops provider-private reasoning blocks from the salvaged history instead of retaining them. Previously, a single cancelled stream could inject hundreds of reasoning items into durable history, causing every future request in the session to grow larger and degrade model quality. Text content and completed tool calls are still salvaged as before.

Polytoken 0.4.1 improves model selection, permissions, file search, provider recovery, and terminal performance for longer sessions.

  • GPT-5.6 Sol, Terra, and Luna are now in the built-in model catalog for both the OpenAI and Codex providers. All three models support low, medium, high, xhigh, and max reasoning effort. Sol and Terra are full-class models, while Luna is a mini-class model.
  • TUI rendering during streaming is significantly faster for long sessions. Polytoken avoids recomputing settled conversation items, caches layout heights, and limits redraw work to visible rows.
  • Concurrent glob and grep calls are now faster.
  • Polytoken improves agent-loop performance for long sessions.
  • Neuralwatt models now receive the correct reasoning configuration based on their capabilities. Models with reasoning_effort support receive the full effort-level set, models with reasoning support reason by default with a disable option, and non-reasoning models receive no reasoning.
  • Mid-stream transport timeouts now enter idle-stall recovery, preserving partial-turn progress instead of ending the turn silently.
  • Literal relative cd targets in shell commands now create deterministic chdir requirements in the permission system, so Polytoken can offer filesystem candidate rules instead of treating the target as opaque.
  • Permission rules for filesystem paths containing resolvable .. components now canonicalize and apply correctly. Paths with unresolved leading .. components, such as ../secrets, remain blocked.
  • Plan handoff from the plan facet to execute now works in autonomous mode.
  • In autonomous mode, explicitly allowed tool calls now skip an unnecessary classifier pass. Polytoken still requires approval for filesystem grants and applies the classifier when no explicit allow rule matches.
  • Permission candidate scoping on macOS now recognizes canonical forms of /tmp and /var/tmp, so symlinked temporary paths produce consistent candidates.
  • Recursive file searches now skip platform no-go directories and paths Polytoken cannot access, while still honoring directories you explicitly target.
  • The system prompt now encourages the model to give each subagent a descriptive name, making concurrent jobs easier to track in the Jobs viewer.
  • Switching between the built-in plan and execute facets no longer changes the model selected with /model.
  • The plan facet no longer asks whether you want a plan of plans.
  • The running timer card no longer disappears intermittently mid-turn.
  • A modal error dialog now captures keyboard input before a pending permission prompt. Pressing Enter or a digit while the error dialog is open no longer answers the concealed prompt.
  • shell_exec now provides full execution context when a command fails, including persisted paths for captured output.

Polytoken 0.4.0 adds the Neuralwatt and Kagi providers, Claude Sonnet 5, custom TUI themes, session goals that drive continuation, .agentblock permanent path blocking, a bypass+ permission mode, per-model compaction thresholds, and configurable keyboard shortcuts. The release also brings major improvements to planning, the Jobs viewer, file references, the @ picker, provider stability, and dozens of terminal UI fixes.

  • Neuralwatt is now available as a dynamic provider. Polytoken discovers Neuralwatt models at runtime and integrates them into the model picker.
  • Kagi is now available as a web search provider.
  • Claude Sonnet 5 is now in the built-in model catalog with effort levels (low, medium, high, xhigh, max), a 1M context window, 128k max output, vision, and adaptive thinking.
  • Custom TUI themes are now available. Polytoken loads theme files from tui.theme-file, validates theme tokens, and lets you preview theme choices through /theme before applying them to the session.
  • Theme files now support HSV colors and reusable palette entries, making custom themes easier to write and validate.
  • The /goal slash command lets you set a goal for the current session. Polytoken persists the goal in the session record and a markdown file, so the goal survives restarts, reloads, and compaction. When a goal is active, Polytoken uses it to drive automatic continuation, keeping long-running work on track.
  • /goal set and /goal resume now start a turn, and resuming a paused goal shows a goal-paused card.
  • Polytoken now discovers skills from .agents/skills before .polytoken/skills, so project-local skills written for common agent ecosystems are available automatically. .polytoken/skills still wins when two discovered skills use the same name.
  • New polytoken validate {skill,facet,subagent} commands check definition files for structural errors before starting the daemon. Each accepts a definition name (resolved through standard discovery tiers) or a direct file path.
  • The configurator’s recommended budget provider now points to Neuralwatt.
  • Plan mode can now use read-only shell_exec, so planning turns can inspect command output without switching into execute mode.
  • Facet switches now honor polytoken.model, so a facet can reliably select its configured model when you move into that facet.
  • Custom default facets that pin a model now apply that model when the daemon starts, matching the model selection behavior used when switching facets during a session.
  • Plan handoff refusal now includes a feedback field, so you can explain what needs to change before accepting a plan.
  • Plan files now use numbered names, old plan flags are cleaned up more consistently, and Polytoken reminds the model about open todos when re-entering planning.
  • A new bypass+ permission mode skips built-in protections and opaque-shell gates like bypass, but still honors explicit deny rules.
  • Permission rules can now include a custom message that Polytoken injects as a system reminder when the rule matches.
  • Polytoken now denies agentic edits to lock files by default for safety.
  • MCP synthetic tool approvals now persist as name-level rules, so approving a tool by its mcp__server__tool name sticks across sessions.
  • Press Ctrl+Shift+P mid-turn to open the permission typeahead and switch permission modes without interrupting the current turn.
  • Breaking change: Permission rule args now use a typed enum with strict validation. Unknown args keys produce hard load errors instead of being silently ignored. Cross-variant hybrid rules are rejected at load time. Correctly formed rules continue to work as before.
  • Fixed a regression where opaque shell command permission persistence options were not offered correctly.
  • Permission decisions that cannot be persisted no longer trigger persistence prompts.
  • Read-only tool denials from the autonomous classifier now escalate to a human prompt instead of blocking outright.
  • The @ file picker now browses directories outside the project. Type @.. to see the project parent’s children, @~ for your home directory, and @/ for the filesystem root (Unix only). Drill into subdirectories by typing path components. External file references resolve and inject content at submit time, just like project-relative references.
  • Reference resolution is now cwd-aware, so @ references resolve correctly after pushd changes the working directory.
  • A new tui.show-ignored-files-in-picker option shows all directories in the @ picker, including dotfiles and .polytoken.
  • .agentblock files block agent access to matched paths unconditionally across all tools and permission modes. Place one at the project root or in any subdirectory using gitignore-style patterns. Blocked paths cannot be read, edited, searched, or referenced by shell commands.
  • .agentblock discovery now protects against filesystem cycles.
  • Breaking change: Compaction thresholds are now per-model instead of a single global setting. Each model derives its own threshold from its context window, and you can override it individually.
  • Breaking change: Keyboard shortcuts are now configurable through a unified tui.keyboard.commands map.
  • max_output_tokens_per_turn is now configurable, with defaults based on the selected model tier.
  • A new daemon.follow_symlinks_for_configs option (default true) controls whether symlinked config and context files are followed during discovery. When set to false, symlinked files are skipped with a warning in the TUI and daemon log. Tool file access is unaffected.
  • The configurator prunes old config backups automatically, keeping the newest 10.
  • Config editing now creates backups with 0o600 permissions and auto-restores the backup on max-attempts exhaustion. Skeleton edits (new files) create no backup.
  • Config rollback now tolerates unrecognized providers and models instead of failing when a previous configuration references entries the current build does not know about.
  • Project-layer config validation now merges the real global config instead of a stub.
  • Polytoken caps Tokio worker threads at 3 by default to reduce resource usage.
  • Provider usage throttling controls request pacing and concurrency for providers that support it.
  • MCP OAuth tokens are now refreshed proactively before expiry.
  • Dynamic provider models appear in @model: typeahead.
  • Umans flash models are classified as mini or nano defaults.
  • OpenAI and Codex Responses requests can now use prompt_cache_key, improving compatibility with provider-side prompt caching.
  • polytoken doctor now resolves dynamic provider catalogs before reporting provider readiness.
  • Polytoken resolves dynamic provider catalogs before model lookup, fixing model selection failures with dynamically registered providers.
  • The false-positive dangling-provider warning no longer fires for dynamic providers.
  • The polytoken models command now lists models from dynamic providers such as Umans. Dynamic models display a (dynamic) marker alongside existing (default) and (small) markers. When a dynamic catalog cannot be resolved, the command lists static and catalog models and prints a warning instead of failing.
  • Fixed a 400 error from Anthropic when using Sonnet 5 or newer models with deferred tools. Polytoken now places cache-control breakpoints on the nearest non-deferred tool instead of the last tool in the list.
  • Fixed OpenAI Responses provider misbehavior.
  • Fixed an issue where OpenAI Responses API tool calls could lose their arguments when output_item.done omitted the arguments field. The parser now accumulates delta fragments as a fallback instead of producing an empty string.
  • MCP stdio servers accept a pass_env field listing specific environment variable names to copy from the daemon process into the stdio child. Explicit env overrides still take precedence on conflicts.
  • MCP stdio servers now pass HOME, PATH, LANG, and TMPDIR by default unless the server config overrides the environment list.
  • Breaking change: The /prompt endpoint now auto-queues a submitted prompt when a turn is already in progress, instead of rejecting it. Clients that relied on a rejection response when the turn slot is held need to handle the queued behavior.
  • The ask_user_question tool result now includes the original context explainer text alongside the answers. This preserves the reasoning through compaction, so the model retains full context even after the original tool call is summarized.
  • web_fetch now windows large pages instead of rejecting them outright, so the model can inspect long pages in chunks.
  • Tool inputs are now stripped of nullish values before dispatch, preventing malformed arguments from reaching providers.
  • The /history response now includes emitted_at timestamps on each item.
  • Polytoken detects when the working directory is deleted and surfaces a system reminder.
  • Empty provider responses after tool results now trigger a re-entry instead of silently ending the turn.
  • Provider stream idle stalls now retry with exponential backoff, up to 6 consecutive stalls before failing.
  • Subagents now receive their working directory as an absolute path, so paths resolve correctly within the subagent context.
  • During automatic prompt draining, Polytoken now adds a reminder so the model does not mistake background notifications for new user input.
  • After compaction, Polytoken injects a CWD reorientation reminder so the model knows relative paths resolve against the current working directory, not the project root.
  • Fixed tool-call argument truncation failures.
  • Polytoken now loads AGENTS.md files from ancestor directories between the global location and the project root. This means shared project-level instructions are picked up when working in a subdirectory. Files are deduplicated by content hash and ancestor @-links are confined to the project root.
  • Rewind now restores runtime context correctly when returning to an earlier point in the session.
  • The working directory stack restores correctly after rewinding past pushd/popd operations.
  • The Todo and Jobs viewers now show scrollbars and support scroll interaction.
  • Subagent cards in the Jobs viewer now support keyboard navigation, expansion, and narration, so you can inspect subagent progress without leaving the viewer.
  • The Jobs viewer now shows the thinking level for each subagent.
  • Plan scrolling is faster after caching interrogative preview rows.
  • File edit cards can auto-expand with a new expand_file_edit_cards config flag.
  • The ask_user_question custom answer area is now three lines tall and clears on Esc or Ctrl+C.
  • @// typeahead now runs asynchronously, so typing stays responsive when searching large directories.
  • The sidebar facet label and mini toggle now use the active facet’s accent color.
  • Polytoken now clears the prompt input lock on attach, preventing a stuck prompt after reconnect.
  • Diff colorization no longer disappears when scrolling with a card open.
  • Diff highlighting now survives history reloads, including attach, reattach, compaction, and rewind.
  • The flagged files pane now shows paths inside the session directory with the $SESSION_DIR shorthand while preserving the real path for copying.
  • Esc now force-releases the prompt instead of leaving it in an ambiguous state.
  • /new is now an alias for /clear.
  • The session picker now supports [K] to kill a selected session.
  • Esc Esc opens a quick rewind picker for returning to an earlier prompt.
  • Invalid slash command arguments are rejected in the TUI instead of being sent to the model as ordinary prompt text.
  • Single Enter now accepts the active typeahead selection and submits the prompt.
  • The custom-text exit shortcut in ask_user_question changed from Up to Ctrl+Up to avoid conflicts with cursor navigation.
  • Polytoken now writes crash logs for TUI panics and lease-lost exits, making failed terminal sessions easier to diagnose.
  • Fixed several ask_user_question interaction issues, including checkbox toggling, custom-text navigation with Up, and text exclusion behavior.
  • Fixed missing and duplicate timer cards in the conversation.
  • Fixed an input handling issue in the session picker drive loop.
  • macOS filesystem scans now avoid repeatedly probing denied directories, and glob searches use a bounded worker count to reduce filesystem overhead.
  • Repository-status reminders no longer reappear after pushd and popd in a way that can corrupt history.
  • Polytoken now stops a turn when a provider repeatedly returns the same synthesized tool call identifiers, preventing a self-sustaining retry loop.
  • Fixed a CPU spin on macOS caused by terminal device handling.
  • Fixed rendering of trailing setext underlines in streaming markdown.
  • Resolved several CPU hotspots in the agent loop.
  • Improved daemon startup speed on large projects.
  • Queued prompts now start correctly after manual compaction finishes and releases the turn slot.
  • The configurator now exits with guidance when it closes without saving.

Polytoken 0.3.3 fixes MCP tool availability in subagents and two terminal UI issues.

  • MCP tools now more reliably provision within subagents in edge cases.
  • Fixed a cursor flash that could appear during rapid file-diff rendering in the terminal UI.
  • Cleaned up the subagent spawn card display by removing a redundant type label and adding a “launched” suffix for clearer job tracking.

Polytoken 0.3.2 adds a disabled state and /mcp command for MCP servers, custom provider HTTP headers, a provider stream idle timeout, and fixes several terminal UI and permissions issues.

  • MCP servers that cannot connect now stop retrying and enter a disabled state instead of looping indefinitely. A new /mcp slash command lets you enable or disable individual servers from the TUI, and servers can be configured to start disabled.
  • Fixed several bugs in MCP server reconnection so recovered tools reach the model after an auto-reconnect cycle, and silently degraded connections are detected before a tool call fails.
  • Custom providers can now send additional HTTP headers on every request. This is useful for proxies, internal gateways, and other Anthropic-compatible endpoints that require backend-specific headers.
  • If a provider stream stalls mid-response, Polytoken now salvages any partial content received so far and continues the turn instead of hanging indefinitely.
  • Read-only tools like file reads and searches are never hard-denied by the autonomous classifier. In autonomous mode, questionable reads now escalate to a confirmation prompt instead of being blocked outright.
  • Added mouse drag selection in interrogative preview areas.
  • Word deletion shortcuts (Ctrl-Backspace, Ctrl-Delete) now work in all text fields.
  • Fixed full-width character cursor drift and text highlighting so East Asian and other wide characters render and select more reliably.
  • Expanded configurator and viewer dialogs to use much more of the available screen space.
  • Clarified the configurator wording around when Polytoken switches into mini mode.
  • Interrogative popups now dismiss cleanly with a single Esc.
  • Added a 256-color fallback when truecolor is unavailable.
  • File edit tools now return a contextual diff in their results, so you can review the surrounding change without digging for it.
  • Fixed rewind so returning to an earlier user message does not leave that prompt duplicated in your history.
  • Fixed a high-CPU lockup that could occur when certain providers returned tool-use responses in an unexpected order.
  • Improved permission handling for shell-style patterns so Polytoken accepts more literal [ test commands and avoids overmatching some glob-like inputs.
  • Compaction no longer includes completed todos in the context summary, saving tokens when your todo list grows long.
  • Subagents can now be given a custom name when spawned, making job handles more readable.

Polytoken 0.3.1 is a patch release.

  • Rumors of a bug in plan-reviewer rendering are grossly exaggerated.
  • You saw nothing.

Polytoken 0.3.0 adds the Umans provider with dynamic model discovery, adds a TLS trust store option and a polytoken doctor readiness check, and brings a broad set of terminal UI, planning, and stability improvements.

Umans is now available as a built-in provider. Polytoken discovers Umans models at runtime from the provider’s live API and caches the last known good catalog for fallback when the network is unavailable. Discovered models appear as read-only entries in polytoken config ui and can be selected as full or mini defaults.

  • polytoken doctor checks startup readiness and reports what stands between you and a working session.
  • polytoken vfs ls and polytoken vfs cat inspect the resources Polytoken ships, such as facets and skills, through the internal polytoken:// virtual filesystem.
  • models and defaults are now user/global-only settings. The project config layer (<project>/.polytoken) can no longer declare them.
  • polytoken config ui is the canonical command name for the interactive configurator. polytoken config configure remains as a backward-compatible alias.
  • A new daemon.tls.trust_store option lets you point Polytoken at a custom certificate authority for daemon connections that use TLS.
  • Custom OpenAI-compatible providers now default to the chat completions protocol, so they work without an explicit protocol hint in most cases.
  • Static API keys are trimmed of leading and trailing whitespace when read, so a stray space no longer breaks authentication.
  • /reload returns a typed error when a configured dynamic default model becomes unavailable.
  • max_tool_batch_size is now derived from the active model’s context window.
  • A slow refresh mode makes Polytoken usable on e-ink displays.
  • You can configure the prompt cut shortcut and a local-paste shortcut.
  • The next queued prompt now appears above the prompt box, so you can see what is coming next.
  • Clicking outside the Jobs and todo viewers dismisses them.
  • The configurator window opens larger, and its validation errors wrap with hanging indents for easier reading.
  • First-run provider guidance is clearer.
  • Polytoken now infers a session title from your conversation, and you can override it.
  • A single Ctrl+C cancels an active assistant turn.
  • Before a plan handoff, Polytoken nudges you to close out open todos.
  • @skill: and @model: shorthand is now resolved at submit time, and @-file reference completion is sourced from the daemon.
  • Queued prompts are appended to your local prompt history.
  • Templates can read the active plan through a scoped active_plan context, and a new source_control template variable exposes repository state.
  • Subagents accept an optional start directory, and pushd can move outside the project when permissions allow.
  • The terminal title is cleared when you quit or detach, so it no longer lingers as polytoken over SSH.
  • Polytoken recovers from a stuck busy state instead of locking a turn, with hardened daemon terminal handling.
  • Resuming a session no longer shows a stale in-flight lockout.
  • Repository reminders and status cache are constrained to your current directory stack.
  • Clicking the status bar dismisses flash messages.

Polytoken 0.2.2 adds pushd/popd directory tools, command substitution in configuration, MCP OAuth credential isolation, and fixes several terminal UI and provider issues.

  • New pushd and popd tools give the model a per-session directory stack, so the model can work within a subdirectory without repeating full paths on every file call.
  • Configuration values now support command substitution with $(cmd) and default values with ${VAR:-default}. Set config_command_substitution: true in your user config to enable it. Only the user or global config layer can turn this on.
  • MCP servers can use a per-server auth_key_name to isolate OAuth credentials when multiple servers share a provider.
  • Rewind now removes the target card and restores your prompt text to the textarea.
  • Typeahead and slash-command recognition are now case-insensitive.
  • You can switch between status bar typeaheads when one is already active.
  • The configurator shows protocol-aware provider URL help and a larger picker.
  • A new /reset-shell command clears a stuck shell session; environment flowback from shell commands is now guarded.
  • Provider tool-use input is now coerced to a JSON object, fixing a class of provider errors.

Polytoken 0.2.1 improves terminal UI status, first-run setup, job navigation, multi-root file search, and permission suggestions.

  • The status bar now shows Git dirty state and ahead/behind indicators for the current branch.
  • A new first-run welcome dialog helps you choose initial configuration settings.
  • Polytoken fixed some bugs in the Jobs viewer.
  • The Jobs viewer now shows a scrollbar when the list is longer than the pane.
  • Polytoken fixed some bugs around canceling interrogatives.
  • Typeahead stays up when backspacing into a model reasoning suffix.
  • Double-clicking a flagged file in the sidebar now copies the file’s absolute path.
  • /version shows the current Polytoken version, and GET /version exposes the same information over the local HTTP API.
  • grep and glob can now search more than one root in a single call and report missing paths separately from permission-denied paths.
  • transclude() can now include project files by path.
  • Permission suggestions now handle filesystem paths and shell redirects more safely.
  • Rules can now match all tools from one MCP server with mcp__<server>.
  • Facets without a configured accent color now receive a generated accent color.
  • Projects can now customize plan handoffs to automate more of the transition from planning to execution.

Polytoken 0.2.0 improves day-to-day prompting, planning, and subagent visibility. The release also adds project-level template variables and new CLI metadata export commands for users who build tooling around Polytoken.

  • Polytoken now gives more direct first-pass answers. The model should start with the answer or recommendation, include the essential rationale, name the next useful decision, and offer deeper detail only when useful.
  • Plan mode now starts from a more structured plan template. Plans include the goal, implementation shape, validation approach, acceptance criteria, and review expectations.
  • Projects can replace the shipped plan template by setting project_vars.plan_facet.plan_spec_override in .polytoken/project_vars.yaml.
  • Templates can now read project variables through {{ project_vars.foo.bar }}. Missing project variables resolve to None, so templates can provide fallback behavior.
  • Clicking inside the prompt box now moves the cursor.
  • Text selection and copy now work inside the prompt box.
  • Double-clicking the prompt box or pressing Ctrl+Y copies the current prompt.
  • Ctrl+Y also copies handoff plans and ask_user_question explainers when Polytoken shows those prompts.
  • Clicking the facet, model, or permissions area in the status bar now opens the matching picker.
  • The mouse wheel now scrolls @ file/reference pickers and / command pickers.
  • Clicking a picker item now highlights the item. Clicking the highlighted item selects it.
  • Polytoken now updates the display more cleanly after a plan handoff, so the execute turn no longer drops the first conversation cards.
  • Turn counters render more reliably and avoid multiple on-screen counters.
  • The terminal bell now rings more predictably for turn completion and questions.
  • A new configuration option disables the animated terminal title bar.
  • /jobs now shows cleaner job status details and better subagent call history.
  • Compaction cards now show more useful detail about what Polytoken compacted.
  • In auto-drain mode, Polytoken now reports subagent failures reliably when the failure arrives.
  • Polytoken now backs off and retries more gracefully when a provider returns intermittent rate-limit responses.
  • polytoken print-commands exports CLI command metadata.
  • polytoken schemas exports structured schemas, including configuration and template frontmatter schemas.