@oh-my-pi/pi-agent-core
Fixed
- Improved session deadline abort signals to carry structured cancellation reasons, enabling timeout-aware tools to correctly classify deadline cancellations.
- Fixed an issue where completed tool executions were incorrectly marked as skipped (clobbering their actual results) if a user message was queued while the tool was in flight.
@oh-my-pi/pi-ai
Added
- Added OpenAI Codex rate-limit response-header ingestion to proactively refresh account usage snapshots and rotate credentials before hitting 429 errors.
Changed
- Optimized multi-account credential ranking to maximize quota utilization and prevent mid-session blocks by prioritizing expiring quota and demoting heavily used accounts.
- Improved responsiveness of credential blocking by bypassing the usage-ingestion throttle immediately when an account is detected as exhausted.
Fixed
- Fixed empty provider responses (such as from Cloud Code Assist API) being treated as non-retryable, allowing session retries and model-fallback chains to engage.
- Fixed OpenAI Codex watchdog timeouts bypassing transport and session retries by ensuring each request attempt has an independent timeout signal.
@oh-my-pi/pi-catalog
Fixed
- Fixed OpenCode Zen and Go discovery to replace stale bundled models with each provider's live model catalog.
@oh-my-pi/pi-coding-agent
Breaking Changes
- Removed the separate
selectorparameters fromreadandgrep; line ranges and read modes must now be appended topath.
Added
- Added a
generate_image.enabledsetting (Settings › Tools › Generate Image) to allow toggling the image generation tool.
Changed
- Expanded provider rate-limit response header ingestion to all supported providers with header parsers (previously Anthropic-only), enabling proactive account rotation for multi-account sessions before hitting 429 errors.
- Restored CPU model metadata in workstation prompts on non-Linux hosts.
Fixed
- Fixed
omp config list --jsonoutput truncation at 64 KiB when stdout is piped. - Fixed vim-style navigation (
h/j/k/l) under the Kitty keyboard protocol. - Fixed
/guided-goalthrowingModel not founderrors on websocket-only Codex models by routing the interview through the session's provider transport and reusing a single isolated side session. - Fixed
tool_resultextension handlers being unable to rewrite the model-visible content of a thrown tool failure. - Fixed intermittent Perplexity OAuth web search failures (401 errors) caused by transient transport drops on the ask endpoint.
- Fixed the
generate_imagetool ignoring--no-toolsand explicit tool whitelists. - Fixed markerless prose thinking preambles incorrectly becoming session titles when title models omit the
<title>marker. - Fixed the agent recreating a todo list immediately after a user clears it with
/todo rm. - Fixed internal-URL autocomplete (
agent://,skill://,omp://, etc.) not triggering inside slash command arguments. - Fixed the browser tool hanging indefinitely during tab closure when the headless Chromium process is wedged on Windows.
- Fixed
history://URLs failing to resolve for unregistered, released, or resumed subagents by falling back to scanning artifacts directories on disk. - Fixed eval cells treating
timeout: 0as a one-second deadline and reporting session-deadline cancellations as user aborts. - Fixed MCP OAuth dynamic client registration for pathful authorization-server issuers by preserving the discovered registration endpoint.
- Fixed the
launchtool failing to start Windows executables due to double-escaped PTY commands and arguments. - Fixed the built-in advisor warning
Advisor unavailablefor silent reviews: a content-less stop is a valid "nothing to add" outcome and is never retried or warned about, regardless of reported token usage (#5212 follow-up). - Fixed
read,edit, andgreptools failing on paths with a stray leading colon emitted by some models. - Fixed git plugin re-installs retaining stale commits by fetching Bun's cached clone before updating the lockfile pin.
- Fixed overlapping Bash timeout and interrupt cleanup to explicitly abort isolated shells instead of leaving child processes running.
- Fixed a bug where generic provider aborts arriving as
stopReason: "error"were not auto-retried. - Fixed switching from a vision model to a text-only model mid-session sending historical image blocks to the new provider.
- Fixed inline images in Agent Hub transcripts by routing replayed images through the shared image budget and Kitty placeholder renderer.
- Fixed OSC 5522 paste in direct API-key login prompts being routed to the hidden main chat editor instead of the focused credential field.
- Fixed plugin installation failures when an ES module extension synchronously requires CommonJS helpers.
- Fixed GitHub code search rejecting empty optional date placeholders.
- Fixed
/treenavigation onto a/skill:injection node landing on the incorrect entry. - Fixed interactive TUI sessions crashing with concurrent JS runtime errors when the JS eval worker falls back to the in-process inline path.
- Fixed compaction aborting instead of trying an authenticated fallback model when Amazon Bedrock credential resolution fails.
- Fixed full-context forks and
/tanclones cold-missing OpenAI prompt caches by properly persisting and inheriting provider prompt-cache keys. - Fixed Codex advisor requests using local session labels as provider session IDs.
- Fixed macOS stdio MCP servers launching in a detached session, allowing the TCC Apple Events permission prompt to trigger.
- Fixed the ask tool timeout to auto-select the recommended option when the UI selector does not settle.
- Fixed LSP workspace diagnostics for Go workspaces to correctly recognize
go.workroots and include all used modules. - Fixed interactive OAuth login success messages waiting on background model discovery.
- Fixed Windows bash tool crashes when an explicit timeout fires while a piped command is still streaming.
- Fixed subagent
yieldtool calls being discarded when the soft request budget hard-aborted the same assistant turn. - Fixed
--toolsfiltering in interactive sessions disabling deferred MCP tools. - Fixed kept-alive task subagents entering repeated provider-call loops after an IRC wake and terminal yield.
- Fixed manual
/compactwith the snapcompact strategy hard-failing on text-only active models. - Fixed the empty-editor
←←gesture trapping input when opening the Agent Hub from persisted/parked subagents. - Fixed eval
read()URI handling in Python and JS runtimes to correctly delegate URI reads and pass pagination arguments. - Fixed discovered plugin
.mcp.jsonstdio servers launching relativecommandorcwdvalues against the session cwd instead of the plugin's config directory. - Fixed Model Hub DEFAULT role assignments with
autoretaining a stale concrete reasoning suffix after restart. - Fixed configured
retry.fallbackChainsfailing to engage on non-retryable provider errors. - Fixed backgrounded Bash blocks continuing to repaint with live output after completion.
- Fixed
--reasoning-slide-plansilently ending the run with no code written when the model answered with a text-only reply. - Fixed launch tool rendering issues, including stacked pending headers and confusing start/wait results when readiness timed out.
- Fixed the in-process
statand other GNU-flavored shell builtins (such asdate,sed,mktemp,tail,find,base64, andln) mangling or failing on macOS/BSD-style invocations.
@oh-my-pi/pi-natives
Fixed
- Fixed an issue where Windows PTY callers were forced through shell command re-quoting by supporting direct executable and argument launching.
@oh-my-pi/pi-tui
Fixed
- Fixed animated Loader ANSI updates causing unnecessary text layout invalidation and re-wrapping on shimmer-only frames (#5230).
- Fixed Ctrl+W (delete word backward) stopping at underscores in snake_case identifiers, treating them as single words (#4776).
- Fixed automatic file completion incorrectly treating punctuation, trailing spaces, and slash-command text as paths, and improved autocomplete dismissal behavior (#5376).
- Fixed Kitty graphics rendering under tmux, ensuring images correctly follow pane scrolling and reflow (#5381).
- Fixed tmux sessions becoming unresponsive after terminal capability replies by falling back to legacy keyboard input mode when the Kitty protocol is unavailable (#5378).
- Fixed PageUp and PageDown keys on an empty prompt editor incorrectly navigating prompt history instead of scrolling the editor viewport (#4754).
@oh-my-pi/pi-utils
Fixed
- Improved CLI argument and flag validation error output to display a concise error message and command usage instead of a minified code frame.
- Corrected required variadic positionals to render as
MODELS...instead of[MODELS]in usage help.
What's Changed
- fix(catalog): sync OpenCode models from live catalogs by @roboomp in #5409
- fix(session): fall back to LLM compaction on manual /compact for text-only models by @roboomp in #5440
- fix(todo): signal removal intent so agent stops rebuilding cleared todos by @roboomp in #5450
- fix(tui): trigger internal-url autocomplete inside slash args by @roboomp in #5454
- fix(mcp): preserve discovered registration endpoint by @roboomp in #5456
- fix(browser): bound headless browser close to unblock tab cleanup by @roboomp in #5458
- fix(coding-agent): reject prose thinking session titles by @roboomp in #5459
- fix(tools): gate generate_image behind setting and tool whitelist by @roboomp in #5466
- fix(cli): flush config JSON output before exit by @roboomp in #5467
- fix(tui): handle Kitty vim navigation sequences by @roboomp in #5469
- fix(coding-agent): route /guided-goal oneshot through Codex websocket transport by @roboomp in #5471
- fix(ai): retry Codex pre-response watchdog timeouts by @roboomp in #5477
- fix(web-search): stop Perplexity OAuth token leaking to the API-key endpoint by @roboomp in #5478
- fix(discovery): resolve relative plugin MCP command/cwd against config dir by @roboomp in #5481
- fix(tui): classify underscore as word char for Ctrl+W by @roboomp in #5487
- fix(models): preserve auto role thinking across restart by @roboomp in #5491
- fix(tui): hand editor tap state to agent hub on double-left open by @roboomp in #5492
- fix(eval): delegate Python URI reads to host resolver by @roboomp in #5494
- fix(tui): guard DynamicBorder against uninitialized module-level theme by @roboomp in #5495
- fix(cli): print concise usage error instead of source dump by @roboomp in #5496
- fix(tools): accept empty GitHub search date placeholders by @roboomp in #5498
- fix(plugins): preserve native CommonJS helper loading by @roboomp in #5499
- fix(tui): constrain automatic file completion triggers by @roboomp in #5501
- fix(tui): keep tmux keyboard input in legacy mode by @roboomp in #5502
- fix(session): land tree navigation on /skill: injection node by @roboomp in #5503
- fix(prompt): restore non-Linux CPU model metadata by @roboomp in #5504
- fix(plugins): refresh stale Bun git cache before reinstall by @roboomp in #5505
- fix(session): auto-retry bare "Request was aborted" error-stop turns by @roboomp in #5506
- fix(tui): cache loader layout across shimmer frames by @roboomp in #5509
- fix(tui): anchor Kitty images through tmux by @roboomp in #5511
- fix(tui): stop PageUp/PageDown stepping prompt history at idle by @roboomp in #5512
- fix(agent): keep completed tool results from false "skipped" placeholder by @roboomp in #5513
- fix(bash): abort isolated shells on cancellation by @roboomp in #5514
- fix(auth): route OSC 5522 paste into login prompts by @roboomp in #5516
- fix(agent): strip images for non-vision models mid-session by @roboomp in #5518
- fix(launch): pass Windows PTY arguments directly by @roboomp in #5520
- fix(coding-agent): accept silent advisor stops with output tokens by @roboomp in #5523
- fix(tools): strip stray leading colon from tool paths by @roboomp in #5529
- fix(eval): honor timeout zero and classify session deadlines by @roboomp in #5451
- fix(internal-urls): serve history:// transcripts from disk fallback by @roboomp in #5455
- fix(extensions): let tool_result rewrite thrown failure content by @roboomp in #5465
Full Changelog: v16.5.1...v16.5.2