🚀 CodeBuddy Code v2.131.0 Release
📦 Version Information
| Component | Version |
|---|---|
| CodeBuddy Code CLI | v2.131.0 |
| Agent SDK JS | v0.3.236 |
| Agent SDK Python | v0.3.235 |
✨ New Features
Skill Visibility Management (skillOverrides + /skills Visual Editor)
Added the skillOverrides setting, which allows fine-grained control of each Skill's visibility by Skill name, with four states:
on(default): Fully available; any Skill not listed in the configuration is treated as this statename-only: Name retained onlyuser-invocable-only: Removed from the model's Skill list, but you can still invoke it by nameoff: Hidden from the model,/menu, Agent SDK, and Remote Control command lists; both/skill-nameand model invocation by name return a disabled prompt
Configuration supports cross-scope overrides with priority: project local > project > user level. Invalid values are filtered and fall back before merging. Skills provided by plugins are not affected by this configuration and remain managed by /plugin.
Additionally, the /skills menu now supports visual editing: use ↑/↓ to select a Skill, use enter / space / ←/→ to cycle through states, and press Esc to write changes to .codebuddy/settings.local.json in one pass, showing the number of changes made; plugin Skills appear as locked and are not editable.
/loop Supports Per-Round Self-Adjustment of Next Interval
Tasks scheduled by /loop can now, after each round completes, let the model decide based on the actual situation whether to advance, delay, maintain the original interval for the next round, or proactively end the loop — no longer limited to repeating the same cron expression. The loop still auto-ends after 3 days and can be manually canceled at any time using CronDelete.
EnterWorktree Supports Attaching to an Existing Worktree
The EnterWorktree tool now accepts an optional path parameter: when passed an existing git worktree path, it switches directly into that worktree instead of creating a new one.
- The target must be a linked worktree (not the main working tree) in the current repository, otherwise an explicit error is returned; if the entry still exists but the directory has been deleted, it prompts you to run
git worktree prune - An attached session always preserves and never deletes the worktree on exit, since it is your pre-existing workspace;
LeaveWorktree's delete operation faithfully returns "preserved" instead of falsely reporting deletion, and the interactive exit menu no longer offers a delete option for attached sessions - The original behavior of creating a new worktree when
pathis not passed remains completely unchanged
🐛 Bug Fixes
- Tool calls dropped within the same streaming event: When a streaming event carried both thinking content and tool calls simultaneously, previously only the thinking content was converted and the tool calls in the same frame were entirely lost, causing the UI to render tool calls as continuous "deep thinking" with no tool execution visible. Now thinking, body content, and tool calls within the same event are all fully converted
- Event loss in multi-connection scenarios: When the same event produced multiple updates, the broadcast path previously only delivered the first update to other connections, causing content loss for sideband connections like Web UI. Updates are now delivered in full and in original order
- Auto-compression failure after switching models: Fixed an issue where, after switching to a small-context model, auto context compression still used the wrong context limit for threshold judgment, causing prolonged tool-call loops that could not trigger compression in time. The compression threshold is now calculated based on the actual context limit of the model in use at runtime
- Sub-agent model inheritance: Sub-agents that do not declare a dedicated model continue to inherit the model used by the main conversation when enterprise custom models are automatically added to the available list, avoiding unintended use of the first list item causing model selection drift
- No-argument tool approval: Fixed an issue where parameterless tools (such as
ExitPlanMode) in stream-json mode were misjudged as "user rejected." Parameters are now correctly normalized and permission requests are sent normally /loopfirst scheduling appears to "hang": Previously, scheduling required the model to executeBash(date)to generate a timestamp, which would block on the permission confirmation prompt in default permission mode, appearing as a hang. This now uses an environment-injected date, eliminating the need to execute a command- Batch delete approval in full access mode: Full access mode no longer triggers batch delete threshold approval; deletion is still covered by the safe-delete recovery process
- Login and warmup stability: Added lifecycle management for the authentication persistence queue and file watching, avoiding restoring old sessions when activation, logout, and re-login occur concurrently; aligned authentication and product environment between warmup and cold start, fixing repeated login on Linux with large configurations and Windows with mixed-case environment variables; fixed an issue where a backup process could be repeatedly created when warmup activation fails
- Kylin OS built-in plugin trusted execution: Migrates bundled cache to KYSEC trusted projection within the plugin registry transaction lock while preserving same-version user or policy updates, avoiding silently overwriting user plugin content at startup
- Plugin Hook compatibility switch: Added a host-level environment variable that can temporarily restore loading only
commandtype during plugin migration