Releases: badlogic/pi-mono
Releases · badlogic/pi-mono
v0.70.0
New Features
- Searchable auth provider login flow: the
/loginprovider selector now supports fuzzy search/filtering, making it faster to find providers when many are configured. See docs/providers.md. (#3572 by @mitsuhiko) - GPT-5.5 Codex support:
openai-codex/gpt-5.5is available as a model option, includingxhighreasoning support and corrected priority-tier pricing. - Terminal progress indicators are now opt-in: OSC 9;4 progress reporting during streaming/compaction is off by default and can be toggled via
terminal.showTerminalProgressin/settings(#3588) --no-builtin-tools/createAgentSession({ noTools: "builtin" })now correctly disables only built-in tools while keeping extension tools active. See docs/extensions.md and README.md (#3592)
Breaking Changes
- Disabled OSC 9;4 terminal progress indicators by default. Set
terminal.showTerminalProgresstotruein/settingsto re-enable (#3588)
Added
- Added searchable auth provider login flow with fuzzy filtering in the provider selector (#3572 by @mitsuhiko)
- Added GPT-5.5 Codex model
- Added auth source labels in
/loginso provider entries can show when auth comes from--api-key, an environment variable, or custom provider fallback without exposing secrets.
Changed
- Updated default model selection across providers to current recommended models.
- Improved stale extension context errors after session replacement or reload to tell extension authors to avoid captured
pi/commandctxand usewithSessionfor post-replacement work.
Fixed
- Fixed
/modelselector cancellation to request render instead of incorrectly triggering login selector. - Changed login, OAuth, and extension selectors for more consistent styling.
- Added Amazon Bedrock setup guidance to
/loginand updated/modelcopy to refer to configured providers instead of only API keys. - Improved no-model and missing-auth warnings to point users to
/loginfor OAuth or API key setup. - Fixed
/quitshutdown ordering to stop the TUI before extension UI teardown can repaint, preserving the final rendered frame while still emittingsession_shutdownbefore process exit. - Fixed
SettingsManager.inMemory()initial settings being lost after reloads triggered by SDK resource loading (#3616) - Fixed
models.jsonprovider compatibility to acceptcompat.supportsLongCacheRetention, allowing proxies to opt out of long-retention cache fields when needed while long retention is enabled by default when requested (#3543) - Fixed
--thinking xhighforopenai-codexgpt-5.5so it is no longer downgraded tohigh. - Fixed git package installs with custom
npmCommandvalues such aspnpmby avoiding npm-specific production flags in that compatibility path (#3604) - Fixed first user messages rendering without spacing after existing notices such as compaction summaries or status messages (#3613)
- Fixed the handoff extension example to use the replacement-session context after creating a new session, avoiding stale
ctxerrors when it installs the generated prompt (#3606) - Fixed session replacement and
/quitteardown ordering to run host-owned extension UI cleanup synchronously aftersession_shutdownhandlers complete but before invalidating the old extension context, preventing stale extension UI from rendering against a disposed session (#3597 by @vegarsti) - Fixed crash on
/quitwhen an extension registers a custom footer whoserender()accessesctx, by tearing down extension-provided UI before invalidating the extension runner during shutdown (#3595) - Fixed auto-retry to treat Bedrock/Smithy HTTP/2 transport failures like
http2 request did not get a responseas transient errors, so the agent retries automatically instead of waiting for a manual nudge (#3594) - Fixed the CLI/SDK tool-selection split so
--no-builtin-toolsandcreateAgentSession({ noTools: "builtin" })disable only built-in default tools while keeping extension/custom tools enabled, instead of falling through to the same "disable everything" path as--no-tools(#3592) - Fixed remaining hardcoded
pi/.pibranding to route throughAPP_NAMEandCONFIG_DIR_NAMEextension points, so SDK rebrands get consistent naming in/quitdescription,process.title, and the project-local extensions directory (#3583 by @jlaneve) - Fixed
pi-coding-agentshippinguuid@11, which triggerednpm auditmoderate vulnerability reports for downstream installs; the package now depends onuuid@14(#3577) - Fixed
openai-completionsstreamed tool-call assembly to coalesce deltas by stable tool index when OpenAI-compatible gateways mutate tool call IDs mid-stream, preventing malformed Kimi K2.6/OpenCode tool streams from splitting one call into multiple bogus tool calls (#3576) - Fixed
ctx.ui.setWorkingMessage()to persist across loader recreation, matching the behavior ofctx.ui.setWorkingIndicator()(#3566) - Fixed coding-agent
fs.watcherror handling for theme and git-footer watchers to retry after transient watcher failures such asEMFILE, avoiding startup crashes in large repos (#3564) - Fixed built-in
kimi-codingmodel generation to attach the expectedUser-Agentheader so direct Kimi Coding requests use the provider's expected client identity (#3586) - Fixed extension shortcut conflict diagnostics to display at startup instead of only on reload, so extension authors discover reserved keybinding conflicts immediately rather than discovering them later through user feedback (#3617)
- Fixed
models.jsonAnthropic-compatible provider configuration to acceptcompat.supportsEagerToolInputStreaming, allowing proxies that reject per-tooleager_input_streamingto use the legacy fine-grained tool streaming beta header instead (#3575) - Fixed startup banner extension labels to strip trailing
index.js/index.tssuffixes (#3596 by @aliou) - Fixed OSC 9;4 terminal progress updates to stay alive in terminals such as Ghostty during long-running agent work (#3610)
- Fixed OpenAI-compatible completion usage parsing to avoid double-counting reasoning tokens already included in
completion_tokens(#3581) - Fixed
openai-responsescompatibility for strict OpenAI-compatible proxies by allowingmodels.jsonto disable the underscore-containingsession_idheader withcompat.sendSessionIdHeader: false(#3579) - Fixed GPT-5.5 Codex capability handling to clamp unsupported minimal reasoning to
lowand apply the model's 2.5x priority service-tier pricing multiplier (#3618 by @markusylisiurunen)
v0.69.0
New Features
- TypeBox 1.x migration for extensions and SDK integrations, including TypeBox-native tool argument validation that now works in eval-restricted runtimes such as Cloudflare Workers. See docs/extensions.md and docs/sdk.md.
- Stacked extension autocomplete providers via
ctx.ui.addAutocompleteProvider(...), allowing extensions to layer custom completion logic on top of built-in slash and path completion. See docs/extensions.md#autocomplete-providers and examples/extensions/github-issue-autocomplete.ts. - Terminating tool results via
terminate: true, allowing custom tools to end on a final tool call without paying for an automatic follow-up LLM turn. See docs/extensions.md and examples/extensions/structured-output.ts. - OSC 9;4 terminal progress indicators during agent streaming and compaction for supporting terminals.
Breaking Changes
- Migrated first-party coding-agent code, SDK/examples/docs, and package metadata from
@sinclair/typebox0.34.x totypebox1.x. New extensions, SDK integrations, and pi packages should depend on and import fromtypebox. Legacy extension loading still aliases the root@sinclair/typeboxpackage, but@sinclair/typebox/compileris no longer shimmed. This migration also picks up the new@mariozechner/pi-aiTypeBox-native validator path, so tool argument validation now works in eval-restricted runtimes such as Cloudflare Workers instead of being skipped (#3112) - Session-replacement commands now invalidate captured pre-replacement session-bound extension objects after
ctx.newSession(),ctx.fork(), andctx.switchSession(). Oldpiand commandctxreferences now throw instead of silently targeting the replaced session. Migration: if code needs to keep working in the replacement session after one of those calls, passwithSessionto that same method and do the post-switch work there. In practice, move post-switchpi.sendUserMessage(),pi.sendMessage(), and command-ctx/session-manager access intowithSession, and use only theReplacedSessionContextpassed to that callback for session-bound operations. Footguns:withSessionruns after the old extension instance has already receivedsession_shutdown, old cleanup may already have invalidated captured state, captured oldpi/ old commandctxare stale, and previously extracted raw objects such asconst sm = ctx.sessionManagerremain the caller's responsibility and must not be reused after the switch.
Added
- Added support for terminating tool results via
terminate: true, allowing custom tools to end the current tool batch without an automatic follow-up LLM call, plus astructured-output.tsextension example and extension docs showing the pattern (#3525) - Added OSC 9;4 terminal progress indicators during agent streaming and compaction, so terminals like iTerm2, WezTerm, Windows Terminal, and Kitty show activity in their tab bar
- Added
ctx.ui.addAutocompleteProvider(...)for stacking extension autocomplete providers on top of the built-in slash/path provider, plus agithub-issue-autocomplete.tsexample and extension docs (#2983)
Fixed
- Fixed exported session HTML to sanitize markdown link URLs before rendering them into anchor tags, blocking
javascript:-style payloads while preserving safe links in shared/exported sessions (#3532) - Fixed
ctx.getSystemPrompt()insidebefore_agent_startto reflect chained system-prompt changes made by earlierbefore_agent_starthandlers, and clarified the extension docs around provider-payload rewrites and whatctx.getSystemPrompt()does and does not report (#3539) - Fixed built-in
google-gemini-climodel lists and selector entries to includegemini-3.1-flash-lite-preview, so Cloud Code Assist users no longer need manual--modelfallback selection to use it (#3545) - Fixed extension session-replacement flows so
ctx.newSession(),ctx.fork(),ctx.switchSession(), and imported-session replacements fully rebind before post-switch work runs, addedwithSessionreplacement callbacks with freshReplacedSessionContexthelpers, and make stale pre-replacementpi/ctxsession-bound accesses throw instead of silently targeting the wrong session (#2860) - Fixed
models.jsonbuilt-in provider overrides to acceptheaderswithout requiringbaseUrl, so request-header-only overrides now load and apply correctly (#3538)
v0.68.1
New Features
- Fireworks provider support with built-in models and
FIREWORKS_API_KEYauth. See README.md#providers--models and docs/providers.md. - Configurable inline tool image width via
terminal.imageWidthCellsin/settings. See docs/settings.md#terminal--images.
Added
- Added built-in Fireworks provider support, including
FIREWORKS_API_KEYsetup/docs and the default Fireworks modelaccounts/fireworks/models/kimi-k2p6(#3519)
Fixed
- Fixed interactive inline tool images to honor configurable
terminal.imageWidthCellsvia/settings, so tool-output images are no longer hard-capped to 60 terminal cells (#3508) - Fixed
sessionDirinsettings.jsonto expand~, so portable session-directory settings no longer require a shell wrapper (#3514) - Fixed parallel tool-call rows to leave the pending state as soon as each tool is finalized, while still appending persisted tool results in assistant source order (#3503)
- Fixed exported session markdown to render Markdown while showing HTML-like message content such as
<file name="...">...</file>verbatim, so shared sessions match the TUI instead of letting the browser interpret message text (#3484) - Fixed exported session HTML to render
grepandfindoutput through their existing TUI renderers andlsoutput through a native template renderer, avoiding missing formatting and spacing artifacts in shared sessions (#3491 by @aliou) - Fixed
@autocomplete fuzzy search to follow symlinked directories and include symlinked paths in results (#3507) - Fixed proxied agent streams to preserve the proxy-safe serializable subset of stream options, including session, transport, retry-delay, metadata, header, cache-retention, and thinking-budget settings (#3512)
- Hardened Anthropic streaming against malformed tool-call JSON by owning SSE parsing with defensive JSON repair, replacing the deprecated
fine-grained-tool-streamingbeta header with per-tooleager_input_streaming, and updating stale test model references (#3175) - Fixed Bedrock runtime endpoint resolution to stop pinning built-in regional endpoints over
AWS_REGION/AWS_PROFILE, restoringus.*andeu.*inference profile support after v0.68.0 while preserving custom VPC/proxy endpoint overrides (#3481, #3485, #3486, #3487, #3488)
v0.68.0
New Features
- Configurable streaming working indicator for extensions via
ctx.ui.setWorkingIndicator(), including animated, static, and hidden indicators. See docs/tui.md#working-indicator, docs/extensions.md, and examples/extensions/working-indicator.ts. before_agent_startnow exposessystemPromptOptions(BuildSystemPromptOptions) so extensions can inspect the structured system-prompt inputs without re-discovering resources. See docs/extensions.md#before_agent_start and examples/extensions/prompt-customizer.ts.- Configurable keybindings for scoped model selector actions and session-tree filter actions. See docs/keybindings.md.
/cloneduplicates the current active branch into a new session, while extensions can choose whether to forkbeforeoratan entry viactx.fork(..., { position }). See README.md, docs/extensions.md, and docs/session.md.
Breaking Changes
- Changed SDK and CLI tool selection from cwd-bound built-in tool instances to tool-name allowlists.
createAgentSession({ tools })now expectsstring[]names such as"read"and"bash"instead ofTool[],--toolsnow allowlists built-in, extension, and custom tools by name, and--no-toolsnow disables all tools by default rather than only built-ins. Migrate SDK code fromtools: [readTool, bashTool]totools: ["read", "bash"](#2835, #3452) - Removed prebuilt cwd-bound tool and tool-definition exports from
@mariozechner/pi-coding-agent, includingreadTool,bashTool,editTool,writeTool,grepTool,findTool,lsTool,readOnlyTools,codingTools, and the corresponding*ToolDefinitionvalues. Use the explicit factory exports instead, for examplecreateReadTool(cwd),createBashTool(cwd),createCodingTools(cwd), andcreateReadToolDefinition(cwd)(#3452) - Removed ambient
process.cwd()/ default agent-dir fallback behavior from public resource helpers.DefaultResourceLoader,loadProjectContextFiles(), andloadSkills()now require explicit cwd/agent-dir style inputs, and exported system-prompt option types now require an explicitcwd. Pass the session or project cwd explicitly instead of relying on process-global defaults (#3452)
Added
- Added extension support for customizing the interactive streaming working indicator via
ctx.ui.setWorkingIndicator(), including custom animated frames, static indicators, hidden indicators, a newworking-indicator.tsexample extension, and updated extension/TUI/RPC docs (#3413) - Added
systemPromptOptions(BuildSystemPromptOptions) tobefore_agent_startextension events, so extensions can inspect the structured inputs used to build the current system prompt (#3473 by @dljsjr) - Added
/cloneto duplicate the current active branch into a new session, while keeping/forkfocused on forking from a previous user message (#2962) - Added
ctx.fork()support forposition: "before" | "at"so extensions and integrations can branch before a user message or duplicate the current point in the conversation; the interactive clone/fork UX builds on that runtime support (#3431 by @mitsuhiko) - Added configurable keybinding ids for scoped model selector actions and tree filter actions, so those interactive shortcuts can be remapped in
keybindings.json(#3343 by @mpazik) - Added
PI_OAUTH_CALLBACK_HOSTsupport for built-in OAuth login flows, allowing local callback servers used bypi authto bind to a custom interface instead of hardcoded127.0.0.1(#3409 by @Michaelliv) - Added
reasonandtargetSessionFilemetadata tosession_shutdownextension events, so extensions can distinguish quit, reload, new-session, resume, and fork teardown paths (#2863)
Changed
- Changed
pi updateto batch npm package updates per scope and run git package updates with bounded parallelism, reducing multi-package update time while preserving skip behavior for pinned and already-current packages (#2980) - Changed Bedrock session requests to omit
maxTokenswhen model token limits are unknown and to omittemperaturewhen unset, letting Bedrock use provider defaults and avoid unnecessary TPM quota reservation (#3400 by @wirjo)
Fixed
- Fixed
AgentSessionsystem-prompt option initialization to avoid constructing an invalid emptyBuildSystemPromptOptions, sonpm run checkpasses aftercwdbecame mandatory. - Fixed shell-path resolution to stop consulting ambient
process.cwd()state during bash execution, so session/project-specificshellPathsettings now follow the active coding-agent session cwd instead of the launcher cwd (#3452) - Fixed
ctx.ui.setWorkingIndicator()custom frames to render verbatim instead of forcing the theme accent color, so extensions now own working-indicator coloring when they customize it (#3467) - Fixed
pi updatereinstalling npm packages that are already at the latest published version by checking the installed package version before runningnpm install <pkg>@latest(#3000) - Fixed
@autocomplete plain queries to stop matching against the full cwd/base path, so path fragments in worktree names no longer crowd out intended results such as@plan(#2778) - Fixed built-in tool wrapping to use the same extension-runner context path as extension tools, so built-in tools receive execution context and
readcan warn when the current model does not support images (#3429) - Fixed
openai-completionsassistant replay to preservecompat.requiresThinkingAsTexttext-part serialization, avoiding same-model follow-up crashes when previous assistant messages mix thinking and text (#3387) - Fixed direct OpenAI Chat Completions sessions to map
sessionIdandcacheRetentionto prompt caching fields, sendingprompt_cache_keywhen caching is enabled andprompt_cache_retention: "24h"for directapi.openai.comrequests with long retention (#3426) - Fixed OpenAI-compatible Chat Completions sessions to optionally send aligned
session_id,x-client-request-id, andx-session-affinityheaders fromsessionIdviacompat.sendSessionAffinityHeaders, improving cache-affinity routing for backends such as Fireworks (#3430) - Fixed threaded
/resumesession relationships and current-session detection to canonicalize symlinked session paths during selector comparisons, so shared session directories no longer break parent-child matching or active-session delete protection (#3364) - Fixed
/session, Sessions docs, and CLI help to consistently document that session reuse supports both file paths and session IDs, and that/sessionshows the current session ID (#3390) - Fixed Windows pnpm global install detection to recognize
\\.pnpm\\store paths, so update notices now suggestpnpm install -g @mariozechner/pi-coding-agentinstead of falling back to npm (#3378) - Fixed missing
@sinclair/typeboxruntime dependency in@mariozechner/pi-coding-agent, so strict pnpm installs no longer fail withERR_MODULE_NOT_FOUNDwhen startingpi(#3434) - Fixed xterm uppercase typing in the interactive editor by decoding printable
modifyOtherKeysinput and normalizing shifted letter matching, soShift+letterno longer disappears inpi(#3436) - Fixed
/compactto reuse the session thinking level for compaction summaries instead of forcinghigh, avoiding invalid reasoning-effort errors ongithub-copilot/claude-opus-4.7sessions configured formediumthinking (#3438) - Fixed shared/exported plain-text tool output to preserve indentation instead of collapsing leading whitespace in the web share page (#3440)
- Fixed exported share pages to use browser-safe
TandOshortcuts with clickable header toggles for thinking and tool visibility instead of browser-reservedCtrl+T/Ctrl+Obindings (#3374 by @vekexasia) - Fixed skill resolution to dedupe symlinked aliases by canonical path, so
pi configno longer shows duplicate skill entries when~/.pi/agent/skillspoints to~/.agents/skills(#3417 by @rwachtler) - Fixed OpenRouter request attrib...
v0.67.68
Release v0.67.68
v0.67.67
New Features
- Bedrock sessions can now authenticate with
AWS_BEARER_TOKEN_BEDROCK, enabling Converse API access without local SigV4 credentials. See docs/providers.md#amazon-bedrock.
Added
- Added Bedrock bearer-token authentication support via
AWS_BEARER_TOKEN_BEDROCK, enabling coding-agent sessions to use Bedrock Converse without local SigV4 credentials (#3125 by @wirjo)
Fixed
- Fixed
/scoped-modelsAlt+Up/Down to stay a no-op in the implicitall enabledstate instead of materializing a full explicit enabled-model list and marking the selector dirty (#3331) - Fixed Mistral Small 4 default thinking requests to use the model's supported reasoning control, avoiding
400errors when starting sessions onmistral-small-2603andmistral-small-latest(#3338) - Fixed Qwen chat-template thinking replay to preserve prior thinking across turns, so affected OpenAI-compatible models keep multi-turn tool-call arguments instead of degrading to empty
{}payloads (#3325) - Fixed exported HTML transcripts so text selection no longer triggers click-based expand/collapse toggles (#3332 by @xu0o0)
- Fixed flaky git package update notifications by waiting for captured git command stdio to fully drain before comparing local and remote commit SHAs (#3027)
- Fixed system prompt dates to use a stable
YYYY-MM-DDformat instead of locale-dependent output, keeping prompts deterministic across runtimes and locales (#2814) - Fixed auto-retry transient error detection to treat
Network connection lost.as retryable, so dropped provider connections retry instead of terminating the agent (#3317) - Fixed compact interactive extension startup summaries to disambiguate package extensions and repeated local
index.tsentries by using package-aware labels and the minimal parent path needed to make local entries unique (#3308) - Fixed git package dependency installation to use production installs (
npm install --omit=dev) during both install and update flows, so extension runtime dependencies must come fromdependenciesand notdevDependencies(#3009) - Fixed
tool_result/afterToolCallextension handling for error results by forwardingdetailsandisErroroverrides throughAgentSessioninstead of dropping them whenisErrorwas already true (#3051) - Fixed missing root exports for
RpcClientand RPC protocol types from@mariozechner/pi-coding-agent, so ESM consumers can import them from the main package entrypoint (#3275) - Fixed OpenAI Codex service-tier cost accounting to trust the explicitly requested tier when the API echoes the default tier in responses, keeping session cost displays aligned with the selected tier (#3307 by @markusylisiurunen)
- Fixed parallel tool-call finalization to convert
afterToolCallhook throws into error tool results instead of aborting the remaining tool batch (#3084) - Fixed Bun binary asset path resolution to honor
PI_PACKAGE_DIRfor built-in themes, HTML export templates, and interactive bundled assets (#3074) - Fixed user-message turn spacing in interactive mode by restoring an inter-message spacer before user turns (except the first user message), preventing assistant and user blocks from rendering flush together.
- Fixed interactive
/importhandling to support quoted JSONL paths with spaces, route missing JSONL files through the non-fatalSessionImportFileNotFoundErrorpath, and document theimportFromJsonl()exceptions (SessionImportFileNotFoundError,MissingSessionCwdError).
v0.67.6
New Features
- Prompt templates support an
argument-hintfrontmatter field that renders before the description in the/autocomplete dropdown, using<angle>for required and[square]for optional arguments. See docs/prompt-templates.md#argument-hints. - New
after_provider_responseextension hook lets extensions inspect provider HTTP status codes and headers immediately after each response is received and before stream consumption begins. See docs/extensions.md. - Compact interactive startup header with a comma-separated view of loaded AGENTS.md files, prompt templates, skills, and extensions. Press
Ctrl+Oto toggle the expanded listing. - Markdown links in assistant output now render as OSC 8 hyperlinks on terminals that advertise support; unknown terminals and tmux/screen default to plain text so URLs are never silently dropped.
Added
- Added
argument-hintfrontmatter field for prompt templates, displayed before the description in the autocomplete dropdown (#2780 by @andresvi94) - Added
after_provider_responseextension hook so extensions can inspect provider HTTP status codes and headers after each provider response is received and before stream consumption begins (#3128) - Added OSC 8 hyperlink rendering for markdown links when the terminal advertises support (#3248 by @ofa1)
Changed
- Changed interactive startup header to a compact, comma-separated view of loaded AGENTS.md files, prompt templates, skills, and extensions, with
Ctrl+Oto toggle the expanded listing (#3267) - Tightened hyperlink capability detection to default
hyperlinks: falsefor unknown terminals and force it off under tmux/screen (including nested sessions), preventing markdown link URLs from disappearing on terminals that silently swallow OSC 8 sequences (#3248)
Fixed
- Fixed
--verbosestartup output to begin with expanded startup help and loaded resource listings after the compact startup header change (#3147) - Fixed
findtool returning no results for path-based glob patterns such assrc/**/*.spec.tsorsome/parent/child/**by switching fd into full-path mode and normalizing the pattern when it contains a/(#3302) - Fixed
findtool applying nested.gitignorerules across sibling directories (e.g. rules froma/.gitignorehiding matching files underb/) by dropping the manual--ignore-filecollection and delegating to fd's hierarchical.gitignorehandling via--no-require-git(#3303) - Fixed OpenAI Responses prompt caching for non-
api.openai.combase URLs (OpenAI-compatible proxies such as litellm, theclawbay) by sending thesession_idandx-client-request-idcache-affinity headers unconditionally when asessionIdis provided, matching the official Codex CLI behavior (#3264 by @vegarsti) - Fixed the
presetexample extension to snapshot the active model, thinking level, and tool set on the first preset application and restore that state when cycling back to(none), instead of falling back to a hardcoded default tool list (#3272 by @stembi)
v0.67.5
Fixed
- Fixed Opus 4.7 adaptive thinking configuration across Anthropic and Bedrock providers by recognizing Opus 4.7 adaptive-thinking support and mapping
xhighreasoning to provider-supported effort values (#3286 by @markusylisiurunen) - Fixed Zellij
Shift+Enterregressions by reverting the Zellij-specific Kitty keyboard query bypass and restoring the previous keyboard negotiation behavior (#3259)
v0.67.4
New Features
--no-context-files(-nc) disables automaticAGENTS.md/CLAUDE.mddiscovery when you need a clean run without project context injection. See README.md#context-files.loadProjectContextFiles()is now exported as a standalone utility for extensions and SDK-style integrations that need to inspect the same context-file resolution order used by the CLI. See README.md#context-files.- New
after_provider_responseextension hook lets extensions inspect provider HTTP status codes and headers immediately after response creation and before stream consumption. See docs/extensions.md.
Added
- Added
--no-context-files(-nc) to disableAGENTS.mdandCLAUDE.mdcontext file discovery and loading (#3253) - Exported
loadProjectContextFiles()as a standalone utility so extensions can discover project context files without instantiating a fullDefaultResourceLoader(#3142) - Added
after_provider_responseextension hook so extensions can inspect provider HTTP status codes and headers after each provider response is received and before stream consumption begins (#3128)
Changed
- Added
claude-opus-4-7model for Anthropic. - Changed Anthropic prompt caching to add a
cache_controlbreakpoint on the last tool definition, so tool schemas can be cached independently from transcript updates while preserving existing cache retention behavior (#3260)
Fixed
- Fixed markdown strikethrough parsing in interactive rendering and HTML export to require strict double-tilde delimiters (
~~text~~) with non-whitespace boundaries. - Fixed shutdown handling to kill tracked detached
bashtool child processes on exit signals, preventing orphaned background processes. - Fixed flaky
edit-tool-no-full-redrawTUI tests by waiting for asynchronous preview and preflight error rendering instead of relying on fixed render ticks. - Fixed
kimi-codingdefault model selection to usekimi-for-codinginstead ofkimi-k2-thinking(#3242) - Fixed
ctrl+zon native Windows to avoid crashing interactive mode, disable the default suspend binding there, and show a status message when suspend is invoked manually (#3191) - Fixed
findtool cancellation and responsiveness on broad searches by making.gitignorediscovery andfdexecution fully abort-aware and non-blocking (#3148) - Fixed
grepbroad-search stalls whencontext=0by formatting match lines from ripgrep JSON output instead of doing synchronous per-match file reads (#3205)
v0.67.3
New Features
renderShell: "self"for custom and built-in tool renderers so tools can own their outer shell instead of the default boxed shell. Useful for stable large previews such as edit diffs. See docs/extensions.md#custom-rendering.- Interactive auto-retry status now shows a live countdown during backoff instead of a static retry delay message.
Added
- Added
renderShell: "self"for custom and built-in tool renderers so tools can own their outer shell instead of using the default boxed shell. This is useful for stable large previews such as edit diffs (#3134)
Fixed
- Fixed edit diff previews to stay visible during edit permission dialogs and session replay without reintroducing large-result redraw flicker (#3134)
- Fixed
/reloadto render a static reload status box instead of an animated spinner, avoiding redraw instability during interactive reloads. - Fixed the
plan-modeexample extension to allowezain the read-only bash allowlist instead of the deprecatedexacommand (#3240 by @rwachtler) - Fixed
google-vertexAPI key resolution to treatgcp-vertex-credentialsas an Application Default Credentials marker instead of a literal API key, so marker-based setups correctly fall back to ADC (#3221 by @deepkilo) - Fixed RPC
promptto wait for prompt preflight success before emitting its single authoritative response, while still treating handled and queued prompts as success (#3049) - Fixed Alt keybindings inside Zellij by skipping the Kitty keyboard protocol query there and enabling xterm
modifyOtherKeysmode 2 directly (#3163) - Fixed
/scoped-modelsreordering to propagate into the/modelscoped tab, preserving the user-defined scoped model order instead of re-sorting it (#3217) - Fixed
session_shutdownto fire onSIGHUPandSIGTERMin interactive, print, and RPC modes so extensions can run shutdown cleanup on those signal-driven exits (#3212) - Fixed screenshot path parsing to handle lower case am/pm in macOS screenshot filenames (#3194 by @jay-aye-see-kay)
- Fixed interactive auto-retry status updates to show a live countdown during backoff instead of a static retry delay message (#3187)