Polytoken 0.8.20 Polytoken 0.8.20 added the claude-haiku-5.5 model to its Anthropic provider, cleaned up rate-limiting logic, and made the rate-limit timer honor a provider's Retry-After header. The release also lets the ask_user_question tool fire in goal mode within a few minutes of the last prompt instead of being suppressed entirely, an experimental change that may be reverted, and fixes hyperlinks, clipboard copying, and built-in facets such as plan-reviewer respecting their designated modelgroups. The prior 0.8.19 release introduced a breaking change binding built-in facets (execute, plan, orchestrate) to their own model groups, so switching facets now selects that facet's model group rather than keeping the session's current model. Changelog 0.8.20 Section titled “0.8.20” 0820 Polytoken 0.8.20 adds Claude Haiku 5.5, cleans up rate-limit handling, honors Retry-After, and lets ask user question fire in goal mode. - Added claude-haiku-5.5 to the Anthropic provider, added under protest. - Cleaned up some more rate-limiting logic. - If a provider sends a Retry-After header, the rate-limit timer will honor it. - ask user question can fire in goal mode within a few minutes of your last prompt, instead of being suppressed entirely. This is experimental and may be reverted. - Some fixes around hyperlinks and copying to clipboard. - Built-ins like plan-reviewer now respect their designated modelgroups. - Bugs. Fixed? Added? Who can say. 0.8.19 Section titled “0.8.19” 0819 Polytoken 0.8.19 binds the built-in facets to their own model groups, makes image handling in the read tools honest, sends explicit non-strict tool definitions to OpenAI-compatible providers, completes —model values from your actual model catalog, explains failed facet switches and deferred-catalog misconfigurations, improves MCP OAuth and herdr integration, sharpens delegation advice and goal-clear queuing, retries capacity limits smarter, and cleans up better after crashes. - Breaking change: switching to a built-in facet execute , plan , orchestrate , including through a plan handoff, now selects that facet’s model group polytoken:execute facet , polytoken:plan facet , polytoken:orchestrate facet instead of keeping whatever model the session was on. If you deliberately picked a different model and then switch facets, the session moves to the group’s model. To keep your own selection, author the group with your models for example modelgroups "polytoken:execute facet" = "your-model" , or define a project facet without a model pin; removing an authored override restores the shipped binding. On configurations where the group cannot resolve, facet switches and handoffs fail with an error naming the unresolved reference instead of silently keeping the old model, and GET /tools/effective reports the same failure. - Tool definitions sent to OpenAI Responses, Codex, and Chat Completions endpoints now state strict: false explicitly, so endpoints that default to strict mode stop inventing values for optional tool fields. - The read tools now say out loud what they always did: images are recognized by file extension only, up to 5 MB, and a renamed screenshot without an extension is a binary blob no matter what its bytes think. - --model completion now offers your actual configured models reasoning variants included instead of whatever files happened to be lying around in the current directory. - Denying tool search under a deferred-tools configuration now fails loudly instead of stranding the tool catalog where neither you nor the model can find it. - Tier defaults in model groups now resolve to the first usable member in authored order, so a group whose first member is disabled or unavailable keeps working instead of failing default inference. No member is ever added automatically. - A legacy defaults tier choice that matches an authored reserved tier group now loads cleanly instead of erroring, while a conflicting one fails the load with an error naming both values and how to remove either one. A raw defaults block in a current config file migrates like an older one instead of being silently used and then silently dropped on save. - A missing default with several eligible models now produces one error that lists the eligible models and names the reserved group and polytoken config ui , instead of two contradictory errors. - Provider Retry-After cooldowns now span prompts: a rate limit with a hint benches that provider for the rest of the daemon session, new prompts skip a cooling provider and start on the next usable group candidate, and a prompt whose whole route is cooling waits visibly and cancellably until the earliest cooldown expires instead of probing. Cooldowns last only for the daemon session. - Improved MCP OAuth handling. - Improved herdr integration a little. - Better subagent delegation advice non-spicy . - Adjustments to the /goal clear UX, to let you queue them up. - When a saved-session goal is active, the model can now actually ask you a structured question if you sent a prompt within the last three minutes: goal mode still answers its own questions autonomously when you’re away, but a question asked right after you’ve said something reaches you instead of being answered on your behalf. The window is per-session and resets on restart; goal continuations the daemon starts on its own never count as your presence. - Labeled Markdown links in the conversation are now real terminal hyperlinks OSC 8 : in terminals that support them Ghostty and others you can click a link label to open it, while the styled label and double-click-to-copy behave exactly as before. Polytoken emits the sequences safely — hostile URLs are encoded or skipped, links under popups and floating windows are never marked up — with no setting and no terminal detection; unsupported terminals ignore it entirely. - Better retry logic when Responses APIs return capacity limit errors. - You can’t wedge a session that requires tool search by disallowing it. - Daemon cleans up after itself better after a crash. - Some odds and ends. - @ file references to files that are not valid UTF-8 now deliver a short omission note instead of garbled replacement characters. - The Jobs viewer’s detail pane takes the mouse wheel across its full width when the content fits, instead of letting those scrolls reach the job list. - A subagent in a provider rate-limit wait no longer transiently shows a stalled marker. 0.8.18 Stable Section titled “0.8.18 Stable” 0818-stable Polytoken 0.8.18 makes facet tool lists closed, adds baseline herdr support and model-group classifier selection, and fixes fd-duplication shell opacity. - Breaking change: in facet frontmatter, polytoken.tools lists are now closed lists. Some undesired tools were sneaking in previously. It is a change to the intended behavior, but it might break something that was wrong in the past. - Baseline herdr support. Still figuring this out. - The permissions classifier can now use a modelgroup. - Shell commands that use fd duplication no longer force an opaque shell check. - Perf improvements for glob . - Assorted housekeeping bug fixes. 0.8.17 Section titled “0.8.17” 0817 Polytoken 0.8.17 adds GPT-6.1 Sol, headless continue, session repair, and smarter group failover. - gpt-6.1-sol now added to OpenAI and Codex providers. - polytoken continue --no-attach is now a thing. - Fixed a write race that was causing sessions to explode hilariously. - polytoken sessions repair