Skip to content

Codeep

v2.0.0 Security

This release includes 2 security fixes for security teams reviewing exposed deployments.

✓ No known CVEs patched
Read the diff → Tool health → What is this tool? →
This release patches 2 known CVEs

Topics

ai ai-agent ai-agents ai-tools cli-app

Affected surfaces

auth rbac breaking_upgrade

Summary

AI summary

Updates Added — TUI polish, Added — Skill bundles, and Added — OpenRouter provider across a mixed release.

Changes in this release

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)

  • openrouter provider 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 / /cost numbers 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.
  • /openrouter slash command for routing preferences:
    prefer <p1>,<p2> (provider order), ignore <p1> (block list),
    fallbacks on|off, privacy strict|allow (sets data_collection),
    clear. Stored per-machine in conf.
  • openrouter/auto support — set the model id to openrouter/auto
    and OpenRouter picks the best upstream for each task. Combine with
    /openrouter prefer to 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 virtual invoke_skill tool.
    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
    optional headers) 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 via chat(). 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_changed notification
    (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 browse shows 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/list capability negotiation. Codeep advertises
    roots: { listChanged: true } in initialize and handles
    roots/list requests 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,
    /mcp slash commands.
  • Custom slash commands. .codeep/commands/<name>.md Markdown
    templates with {{args}} / $ARGUMENTS / {{argN}} placeholders.
    Project files shadow global. Warning banner on first session.
  • Lifecycle hooks. .codeep/hooks/<event>.sh shell scripts run on
    pre_tool_call, post_edit, on_error, pre_commit. Apply
    uniformly to built-in and MCP tools.
  • /memory and /profile now work in ACP (Zed / VS Code), not
    just the TUI.
  • ACP fs/read_text_file and fs/write_text_file delegation
    agent tool calls route through the client when capability is
    advertised, with a 100 KB size cap on delegated reads.
  • ACP authMethods — single Codeep CLI agent-type entry for
    acp-registry compliance + authenticate no-op handler.
  • Auto-reconnect on MCP server crash (3× in 60s with exponential
    backoff). Persistent failures surface in /mcp instead of being
    silently dropped.
  • VS Code 0.2.0:
    • Native vscode.diff viewer for proposed edits + Accept/Reject
      CodeLens (closes diff tab → implicit reject).
    • Cmd+Shift+A Attach Active File.
    • @symbol mentions alongside @file.
    • MCP server management from the command palette (Add / Remove /
      Open Config).
    • Auto-loads ~/.codeep/mcp_servers.json and project equivalent.
    • Permission labels honest about scope ("Allow for this session").

Fixed

  • /provider was not in AVAILABLE_COMMANDS — invisible to Zed / VS
    Code / autocomplete.
  • /apikey and /login warn that inline keys leak into shell history.
  • write_file double-recorded itself in the action log when client-side
    delegation failed and we fell through to disk.
  • Delegated fs/read_text_file had 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 external abortSignal honoured.
  • 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/createMessage now 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 fix resolved fast-uri (path traversal / host confusion)
    and picomatch (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 excluding dist/zed/* and bin/codeep-* pkg-built standalone
    binaries from the files field. Those binaries continue to ship via
    GitHub releases and the Zed extension distribution.

Breaking changes

  • McpServer in the protocol now has command? and args? (was
    required), plus new url? and headers?. ACP clients that produced
    the old shape still work — fields are optional, parser accepts both.
  • MCP client protocol version bumped from 1.4.0 to 2.0.0 in
    initialize's clientInfo. 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

Track Codeep

Get notified when new releases ship.

Sign up free

About Codeep

All releases →

Related context

Earlier breaking changes

  • v2.4.1 MiniMax M3 replaces MiniMax-M2.7 as default model across all providers.

Beta — feedback welcome: [email protected]