before_agent_start event now receives systemPrompt in the event object and returns systemPrompt (full replacement) instead of systemPromptAppend. Extensions that were appending must now use event.systemPrompt + extra pattern. (#575)
discoverSkills() now returns { skills: Skill[], warnings: SkillWarning[] } instead of Skill[]. This allows callers to handle skill loading warnings. (#577 by @cv)
Added
ctx.ui.getAllThemes(), ctx.ui.getTheme(name), and ctx.ui.setTheme(name | Theme) methods for extensions to list, load, and switch themes at runtime (#576)
--no-tools flag to disable all built-in tools, allowing extension-only tool setups (#557 by @cv)
Pluggable operations for built-in tools enabling remote execution via SSH or other transports (#564). Interfaces: ReadOperations, WriteOperations, EditOperations, BashOperations, LsOperations, GrepOperations, FindOperations
user_bash event for intercepting user !/!! commands, allowing extensions to redirect to remote systems (#528)
setActiveTools() in ExtensionAPI for dynamic tool management
Built-in renderers used automatically for tool overrides without custom renderCall/renderResult
ssh.ts example: remote tool execution via --ssh user@host:/path
interactive-shell.ts example: run interactive commands (vim, git rebase, htop) with full terminal access via !i prefix or auto-detection
Wayland clipboard support for /copy command using wl-copy with xclip/xsel fallback (#570 by @OgulcanCelik)
Experimental:ctx.ui.custom() now accepts { overlay: true } option for floating modal components that composite over existing content without clearing the screen (#558 by @nicobailon)
AgentSession.skills and AgentSession.skillWarnings properties to access loaded skills without rediscovery (#577 by @cv)
Fixed
String systemPrompt in createAgentSession() now works as a full replacement instead of having context files and skills appended, matching documented behavior (#543)
Update notification for bun binary installs now shows release download URL instead of npm command (#567 by @ferologics)
ESC key now works during "Working..." state after auto-retry (#568 by @tmustier)
Abort messages now show correct retry attempt count (e.g., "Aborted after 2 retry attempts") (#568 by @tmustier)
Fixed Antigravity provider returning 429 errors despite available quota (#571 by @ben-vargas)
Fixed malformed thinking text in Gemini/Antigravity responses where thinking content appeared as regular text or vice versa. Cross-model conversations now properly convert thinking blocks to plain text. (#561)
--no-skills flag now correctly prevents skills from loading in interactive mode (#577 by @cv)