This release includes 2 security fixes for security teams reviewing exposed deployments.
Topics
Affected surfaces
Summary
AI summaryUpdates Added — TUI polish, Added — Skill bundles, and Added — OpenRouter provider across a mixed release.
Changes in this release
| Type | Severity | Summary | CVE |
|---|---|---|---|
| Security | Medium |
MCP sampling requests rate-limited, budget-capped per server, with logging of accepted requests. MCP sampling requests rate-limited, budget-capped per server, with logging of accepted requests. Source: granite4.1:8b-q6_K@2026-05-20 Confidence: low |
— |
| Security | Medium |
Fixed high-severity CVEs in `fast-uri` (path traversal) and `picomatch` (ReDoS) via npm audit fix. Fixed high-severity CVEs in `fast-uri` (path traversal) and `picomatch` (ReDoS) via npm audit fix. Source: granite4.1:8b-q6_K@2026-05-20 Confidence: low |
— |
| Breaking | Medium |
McpServer protocol now optional fields `command`, `args`, plus new `url` and `headers`; version bumped to 2.0.0. McpServer protocol now optional fields `command`, `args`, plus new `url` and `headers`; version bumped to 2.0.0. Source: granite4.1:8b-q6_K@2026-05-20 Confidence: low |
— |
| Feature | Medium |
OpenRouter provider added with top 12 models hardcoded and full catalogue fetched on demand. OpenRouter provider added with top 12 models hardcoded and full catalogue fetched on demand. Source: granite4.1:8b-q6_K@2026-05-20 Confidence: high |
— |
| Feature | Medium |
Skill bundles introduced, compatible with Claude Code skills, auto-discovered by agent. Skill bundles introduced, compatible with Claude Code skills, auto-discovered by agent. Source: granite4.1:8b-q6_K@2026-05-20 Confidence: high |
— |
| Feature | Medium |
MCP now supports full HTTP+SSE spec, sampling capability, and auto-injected tools for resources and prompts. MCP now supports full HTTP+SSE spec, sampling capability, and auto-injected tools for resources and prompts. Source: granite4.1:8b-q6_K@2026-05-20 Confidence: low |
— |
| Feature | Medium |
TUI menus receive type-to-filter functionality across all pickers. TUI menus receive type-to-filter functionality across all pickers. Source: granite4.1:8b-q6_K@2026-05-20 Confidence: low |
— |
| Feature | Medium |
Lifecycle hooks implemented through `.codeep/hooks/<event>.sh` scripts. Lifecycle hooks implemented through `.codeep/hooks/<event>.sh` scripts. Source: granite4.1:8b-q6_K@2026-05-20 Confidence: low |
— |
| Feature | Medium |
VS Code extension gains diff viewer for edits, file management commands, and delegated FS ops. VS Code extension gains diff viewer for edits, file management commands, and delegated FS ops. Source: granite4.1:8b-q6_K@2026-05-20 Confidence: low |
— |
| Feature | Medium |
Custom slash commands via `.codeep/commands/<name>.md` templates with placeholders. Custom slash commands via `.codeep/commands/<name>.md` templates with placeholders. Source: granite4.1:8b-q6_K@2026-05-20 Confidence: low |
— |
| Feature | Medium |
Authoritative per-call cost from `usage.cost` used instead of local pricing table for OpenRouter. Authoritative per-call cost from `usage.cost` used instead of local pricing table for OpenRouter. Source: granite4.1:30b@2026-05-20-audit Confidence: low |
— |
| Feature | Medium |
Branding headers (`HTTP-Referer`, `X-Title`) sent on every OpenRouter request for attribution. Branding headers (`HTTP-Referer`, `X-Title`) sent on every OpenRouter request for attribution. Source: granite4.1:30b@2026-05-20-audit Confidence: low |
— |
| Feature | Medium |
`/openrouter` slash command added for routing preferences, blocking lists, fallbacks, privacy settings, and clearing config. `/openrouter` slash command added for routing preferences, blocking lists, fallbacks, privacy settings, and clearing config. Source: granite4.1:30b@2026-05-20-audit Confidence: low |
— |
| Feature | Medium |
`openrouter/auto` model ID lets OpenRouter auto-select the best upstream provider per task. `openrouter/auto` model ID lets OpenRouter auto-select the best upstream provider per task. Source: granite4.1:30b@2026-05-20-audit Confidence: low |
— |
| Feature | Medium |
/skills slash commands added for listing, creating, showing, browsing marketplace, installing, publishing, and unpublishing bundles. /skills slash commands added for listing, creating, showing, browsing marketplace, installing, publishing, and unpublishing bundles. Source: granite4.1:30b@2026-05-20-audit Confidence: low |
— |
| Feature | Medium |
Public skill‑bundle marketplace hosted at https://codeep.dev/skills with owner dashboard controls. Public skill‑bundle marketplace hosted at https://codeep.dev/skills with owner dashboard controls. Source: granite4.1:30b@2026-05-20-audit Confidence: low |
— |
| Feature | Medium |
VS Code commands added for browsing, creating, and opening skill bundles. VS Code commands added for browsing, creating, and opening skill bundles. Source: granite4.1:30b@2026-05-20-audit Confidence: low |
— |
| Feature | Medium |
Welcome banner warns users when a workspace contains project‑scoped skill bundles before invocation. Welcome banner warns users when a workspace contains project‑scoped skill bundles before invocation. Source: granite4.1:30b@2026-05-20-audit Confidence: low |
— |
| Feature | Medium |
MCP now supports streamable HTTP+SSE transport via `url` field, mutually exclusive with `command`. MCP now supports streamable HTTP+SSE transport via `url` field, mutually exclusive with `command`. Source: granite4.1:30b@2026-05-20-audit Confidence: low |
— |
| Feature | Medium |
MCP sampling capability allows servers to request completions on behalf of Codeep. MCP sampling capability allows servers to request completions on behalf of Codeep. Source: granite4.1:30b@2026-05-20-audit Confidence: low |
— |
| Feature | Medium |
Resources and prompts from MCP servers auto‑inject virtual tools (`__resource_list`, `__resource_read`, `__prompt_list`, `__prompt_get`). Resources and prompts from MCP servers auto‑inject virtual tools (`__resource_list`, `__resource_read`, `__prompt_list`, `__prompt_get`). Source: granite4.1:30b@2026-05-20-audit Confidence: low |
— |
| Feature | Medium |
Mid‑run tool catalog refresh via `tools/list_changed` notification so agents see new tools without restart. Mid‑run tool catalog refresh via `tools/list_changed` notification so agents see new tools without restart. Source: granite4.1:30b@2026-05-20-audit Confidence: low |
— |
| Feature | Medium |
MCP marketplace commands `/mcp browse` and `/mcp install <id>` provide curated server list and one‑click setup. MCP marketplace commands `/mcp browse` and `/mcp install <id>` provide curated server list and one‑click setup. Source: granite4.1:30b@2026-05-20-audit Confidence: low |
— |
| Feature | Medium |
Roots capability negotiation (`roots: {listChanged:true}`) advertises workspace folder to filesystem‑shaped servers. Roots capability negotiation (`roots: {listChanged:true}`) advertises workspace folder to filesystem‑shaped servers. Source: granite4.1:30b@2026-05-20-audit Confidence: low |
— |
| Feature | Low |
Type‑to‑filter added to every TUI menu picker (model, provider, login, language, sessions, export, logout). Type‑to‑filter added to every TUI menu picker (model, provider, login, language, sessions, export, logout). Source: granite4.1:30b@2026-05-20-audit Confidence: low |
— |
| Feature | Low |
First‑run provider picker reordered; top entries show short descriptions for clarity. First‑run provider picker reordered; top entries show short descriptions for clarity. Source: granite4.1:30b@2026-05-20-audit Confidence: low |
— |
| Feature | Low |
/cost, /compact [keepN], /commands, /checkpoint [name], /checkpoints, /rewind <id>, /hooks slash commands added. /cost, /compact [keepN], /commands, /checkpoint [name], /checkpoints, /rewind <id>, /hooks slash commands added. Source: granite4.1:30b@2026-05-20-audit Confidence: low |
— |
| Feature | Low |
Lifecycle hooks implemented through `.codeep/hooks/<event>.sh` shell scripts for events like pre_tool_call, post_edit, on_error, pre_commit. Lifecycle hooks implemented through `.codeep/hooks/<event>.sh` shell scripts for events like pre_tool_call, post_edit, on_error, pre_commit. Source: granite4.1:30b@2026-05-20-audit Confidence: low |
— |
| Feature | Low |
/memory and /profile now functional in ACP (Zed/VS Code) beyond the TUI. /memory and /profile now functional in ACP (Zed/VS Code) beyond the TUI. Source: granite4.1:30b@2026-05-20-audit Confidence: low |
— |
| Feature | Low |
ACP delegates `fs/read_text_file` and `fs/write_text_file` with a 100 KB size cap on reads. ACP delegates `fs/read_text_file` and `fs/write_text_file` with a 100 KB size cap on reads. Source: granite4.1:30b@2026-05-20-audit Confidence: low |
— |
| Feature | Low |
ACP adds single `Codeep CLI` authentication method entry for registry compliance; handler is no‑op. ACP adds single `Codeep CLI` authentication method entry for registry compliance; handler is no‑op. Source: granite4.1:30b@2026-05-20-audit Confidence: low |
— |
| Feature | Low |
Auto‑reconnect with exponential backoff added for crashed MCP servers (3 attempts in 60 s). Auto‑reconnect with exponential backoff added for crashed MCP servers (3 attempts in 60 s). Source: granite4.1:30b@2026-05-20-audit Confidence: low |
— |
| Feature | Low |
Persistent MCP failures now surface in `/mcp` UI instead of being silently dropped. Persistent MCP failures now surface in `/mcp` UI instead of being silently dropped. Source: granite4.1:30b@2026-05-20-audit Confidence: low |
— |
| Feature | Low |
VS Code extension 0.2.0 adds native diff viewer with Accept/Reject CodeLens, `Cmd+Shift+A` attach active file, `@symbol` mentions, MCP server management commands, and honest permission labels. VS Code extension 0.2.0 adds native diff viewer with Accept/Reject CodeLens, `Cmd+Shift+A` attach active file, `@symbol` mentions, MCP server management commands, and honest permission labels. Source: granite4.1:30b@2026-05-20-audit Confidence: low |
— |
| Bugfix | Medium |
Fixed `/provider` omission from `AVAILABLE_COMMANDS`, making it visible in Zed/VS autocomplete. Fixed `/provider` omission from `AVAILABLE_COMMANDS`, making it visible in Zed/VS autocomplete. Source: granite4.1:8b-q6_K@2026-05-20 Confidence: high |
— |
| Bugfix | Medium |
Resolved double-recording of `write_file` actions and size cap for delegated FS reads. Resolved double-recording of `write_file` actions and size cap for delegated FS reads. Source: granite4.1:8b-q6_K@2026-05-20 Confidence: low |
— |
| Bugfix | Medium |
Added timeout to `compactHistory()` preventing hung provider from wedging the session. Added timeout to `compactHistory()` preventing hung provider from wedging the session. Source: granite4.1:8b-q6_K@2026-05-20 Confidence: low |
— |
| Bugfix | Low |
/apikey and /login now warn that inline keys may leak into shell history. /apikey and /login now warn that inline keys may leak into shell history. Source: granite4.1:30b@2026-05-20-audit Confidence: low |
— |
Full changelog
Codeep 2.0 is here. Full MCP support (stdio + HTTP), skill bundles with a public marketplace, OpenRouter with accurate per-call cost, checkpoints, custom commands, lifecycle hooks. 921 tests green.
Big release. Major version bump because the on-disk mcp_servers.json
shape now accepts url (HTTP transport) alongside command (stdio),
because the agent now actively reads from MCP servers' resources,
prompts, and (optionally) hosts sampling for them — clients that
relied on Codeep behaving as a tools-only client will see new traffic
— and because skill bundles are a new top-level concept the agent
auto-discovers and invokes.
Added — OpenRouter provider (100+ models via one key)
openrouterprovider wired through the existing OpenAI-compatible
flow. Top 12 popular models hardcoded for the picker; the full
catalogue (100+) is fetched on demand via/model, with live pricing
per 1M tokens and context-window size shown per row.- Authoritative cost from
usage.cost. OpenRouter returns the
per-call USD figure in its response — we use that instead of our
local pricing table, so your dashboard //costnumbers match the
OpenRouter invoice exactly with zero local maintenance. - Branding headers (
HTTP-Referer: https://codeep.dev,
X-Title: Codeep) sent on every OpenRouter request — surfaces
Codeep traffic in their dashboard for attribution. /openrouterslash command for routing preferences:
prefer <p1>,<p2>(provider order),ignore <p1>(block list),
fallbacks on|off,privacy strict|allow(setsdata_collection),
clear. Stored per-machine in conf.openrouter/autosupport — set the model id toopenrouter/auto
and OpenRouter picks the best upstream for each task. Combine with
/openrouter preferto bias the auto-router without locking it down.
Added — Skill bundles (Claude Code-compatible)
- Structured skill bundles under
.codeep/skills/<name>/SKILL.md
(project) and~/.codeep/skills/<name>/SKILL.md(global). The
SKILL.md format is a superset of Claude Code skills — paste an
existing skill verbatim and it works. Codeep-specific extensions
(codeep-min-version,codeep-requires-mcp) are valid YAML, so
Claude Code parsers tolerate them. - Agent auto-discovery. Every agent run injects the bundle catalog
into the system prompt and registers a virtualinvoke_skilltool.
The model picks a skill when the user's intent matches; we return
the SKILL.md body for it to follow step by step. - Slash commands for managing bundles:
/skills bundles— list installed/skills create-bundle <name>— scaffold a project skill/skills show <name>— print the SKILL.md/skills browse [query]— search the public marketplace/skills install <owner>/<slug>— pull from marketplace/skills publish <slug> [--public]— share to codeep.dev/skills unpublish <owner>/<slug>— remove your published skill
- Public marketplace at codeep.dev/skills.
Owners manage their published skills at/dashboard/skills—
toggle visibility, unpublish, see install counts. - VS Code commands for the bundle workflow:
Codeep: Browse Skill Bundles…,Codeep: Create Skill Bundle…,Codeep: Open Skills Folder. - Welcome banner warning when a workspace ships project-scoped
skill bundles — informed consent before the agent starts invoking
unfamiliar capabilities.
Added — MCP gets full spec coverage
- Streamable HTTP transport. MCP servers configured with
url(and
optionalheaders) are reached over the spec's HTTP+SSE flow instead
of stdio. POST for requests, GET-side SSE for server-pushed
notifications and server-initiated requests. Mutually exclusive with
command— pick one per server. - Sampling capability. When a server opts into
sampling, it can
ask Codeep to generate a completion on its behalf; we bridge to the
active provider viachat(). Server gets just the assistant text;
no tool use is forwarded. - Resources & prompts auto-injected into the agent's tool catalog.
Each server that exposes resources or prompts gets four virtual tools
the model can call natively:<server>__resource_list,
<server>__resource_read,<server>__prompt_list,
<server>__prompt_get. No more "user types/mcp read <uri>
manually". Servers that don't expose either get nothing extra. - Mid-run tool catalog refresh. A
tools/list_changednotification
(or a successful auto-restart) flips a dirty bit; the agent re-fetches
the catalog at the start of the next iteration so the model sees new
tools without a session restart. - MCP marketplace.
/mcp browseshows a curated catalog of popular
servers (filesystem, github, postgres, slack, brave-search, …);
/mcp install <id> [extra args]writes the config + spawns. Each
entry surfaces env-var and arg hints so the user knows what to set. roots+roots/listcapability negotiation. Codeep advertises
roots: { listChanged: true }ininitializeand handles
roots/listrequests by returning the current workspace folder —
filesystem-shaped servers can scope reads accordingly.
Added — TUI polish
- Type-to-filter in every menu picker.
/model,/provider,
/login,/lang, sessions, export, logout — start typing and the
list narrows by key / label / description. Backspace edits, first
Esc clears the filter, second Esc closes. Critical for the
OpenRouter 100+ model catalogue but useful everywhere. - First-run provider picker reordered. Anthropic, OpenAI,
OpenRouter, Z.AI sit at the top instead of being buried under
regional / parameter-variant entries. Each row now shows the short
provider description ("Unified access to 100+ models via one API
key") so the value prop is visible at a glance.
Added — earlier in the 2.0 cycle (already in dev builds)
/cost,/compact [keepN],/commands,/checkpoint [name],/checkpoints,/rewind <id>,/hooks,
/mcpslash commands.- Custom slash commands.
.codeep/commands/<name>.mdMarkdown
templates with{{args}}/$ARGUMENTS/{{argN}}placeholders.
Project files shadow global. Warning banner on first session. - Lifecycle hooks.
.codeep/hooks/<event>.shshell scripts run on
pre_tool_call,post_edit,on_error,pre_commit. Apply
uniformly to built-in and MCP tools. /memoryand/profilenow work in ACP (Zed / VS Code), not
just the TUI.- ACP
fs/read_text_fileandfs/write_text_filedelegation —
agent tool calls route through the client when capability is
advertised, with a 100 KB size cap on delegated reads. - ACP
authMethods— singleCodeep CLIagent-type entry for
acp-registry compliance +authenticateno-op handler. - Auto-reconnect on MCP server crash (3× in 60s with exponential
backoff). Persistent failures surface in/mcpinstead of being
silently dropped. - VS Code 0.2.0:
- Native
vscode.diffviewer for proposed edits + Accept/Reject
CodeLens (closes diff tab → implicit reject). Cmd+Shift+AAttach Active File.@symbolmentions alongside@file.- MCP server management from the command palette (Add / Remove /
Open Config). - Auto-loads
~/.codeep/mcp_servers.jsonand project equivalent. - Permission labels honest about scope ("Allow for this session").
- Native
Fixed
/providerwas not inAVAILABLE_COMMANDS— invisible to Zed / VS
Code/autocomplete./apikeyand/loginwarn that inline keys leak into shell history.write_filedouble-recorded itself in the action log when client-side
delegation failed and we fell through to disk.- Delegated
fs/read_text_filehad no size cap; a misbehaving client
could return a multi-GB blob and OOM the agent. compactHistory()had no timeout — a hung provider would wedge the
session. Now caps at 60 s with an externalabortSignalhonoured.- Diff editor occasionally stayed orphaned in VS Code if the user
responded faster than the open completed. - MCP tool name normalization stripped hyphens, so servers named with a
-couldn't route their tool calls (my-fs__read_file≠
my_fs__read_file).
Removed
- 19 obsolete model entries in
tokenTracker.ts(gpt-4.1*, o3,
o4-mini, gpt-4o, claude-mythos-preview, claude-sonnet-4-5-20250929,
gemini-2.5-, gemini-3.1-flash-lite-preview, MiniMax-M2.5,
MiniMax-M2.1*, MiniMax-M2) — continuation of the 1.3.42 cleanup.
Security
- MCP
sampling/createMessagenow rate-limited and budget-capped per
server (≥1 s spacing, 100 requests / process). Each accepted request
is logged to stderr with the originating server name. Closes the path
by which a misbehaving or malicious MCP server could drain a user's
paid-provider credits. npm audit fixresolvedfast-uri(path traversal / host confusion)
andpicomatch(ReDoS / method injection) high-severity CVEs in
transitive dependencies.
Packaging
- npm tarball reduced from 164.8 MB → 340 kB (unpacked 436 MB → 1.4 MB)
by excludingdist/zed/*andbin/codeep-*pkg-built standalone
binaries from thefilesfield. Those binaries continue to ship via
GitHub releases and the Zed extension distribution.
Breaking changes
McpServerin the protocol now hascommand?andargs?(was
required), plus newurl?andheaders?. ACP clients that produced
the old shape still work — fields are optional, parser accepts both.- MCP client protocol version bumped from
1.4.0to2.0.0in
initialize'sclientInfo. Servers that key off the version string
may need an allowlist update.
Breaking Changes
- MCP server config now allows optional `command`/`args` and introduces new fields `url` and `headers`; the client protocol version bumped from `1.4.0` to `2.0.0` in `initialize.clientInfo`.
- `McpServer` schema changed: `command?` and `args?` are optional (previously required) and new optional fields `url?`, `headers?` added.
Security Fixes
- MCP `sampling/createMessage` is now rate‑limited (≥1 s spacing) and budget‑capped at 100 requests per process; each request logged to stderr.
- dep: fast-uri CVE fixed (path traversal/host confusion), dep: picomatch CVE fixed (ReDoS/method injection).
Weekly OSS security release digest.
The CVE patches and breaking changes that affected production tools this week. One email, every Sunday.
No spam, unsubscribe anytime.
Share this release
About Codeep
All releases →Related context
Related tools
Earlier breaking changes
- v2.4.1 MiniMax M3 replaces MiniMax-M2.7 as default model across all providers.
Beta — feedback welcome: [email protected]