⚠️ Breaking changes
The MCP server and the agent's file tools refuse three things they used to do:
- No file tool writes inside a
.gitdirectory any more, or inside the git directory a.gitfile points to (git init --separate-git-dir, a worktree), in the CLI or over MCP. Git runs the commands its config and hooks name, so a write there could run code on your machine. Change git's own files with git. - MCP
write_fileandsurgical_replace_codeno longer change files that look like credentials (.env,.env.*, private keys,.aws/credentials, and the rest of the list MCPread_filealready refuses)..env.exampleand other templates are still written. To keep the old behaviour, exportCGR_ALLOW_SENSITIVE_WRITES=truein the environment the server starts with (a.envfile cannot set it). The CLI agent already asks before every write and is unchanged. cgr mcp-serverno longer starts in a directory that holds your home directory, or in a disk root such as/, unlessTARGET_REPO_PATHnames it (a client that names a narrower project inCLAUDE_PROJECT_ROOTgets that project served instead). A client that launches the server withoutTARGET_REPO_PATHfrom such a directory now gets a configuration error at start-up. SetTARGET_REPO_PATHto the project's directory in the client's server configuration, as the MCP setup guide shows.
The HTTP transport without MCP_HTTP_AUTH_TOKEN now also refuses requests whose Host or Origin header names anything other than 127.0.0.1, localhost or [::1] on the server's port. Local clients are unaffected. With a token nothing changes.
Existing installs: a server configured with TARGET_REPO_PATH set to a project, as the setup guide shows, starts as before. See Credential files and the MCP server guide.
Highlights
- Rust Upgrade: Updated Rust to version 1.99.1-slim-trixie.
- Security Improvements: Enhanced security by determining the target Git directory for writes and hardening the MCP server's file tools and HTTP transport.
- Signature Functionality: Added support for reading and writing JavaScript headers for change signatures, including the ability to change the signature of JavaScript functions or methods.
- Benchmark Enhancement: Added ColGrep to the retrieval benchmark for improved evaluation.
- Dependency Updates: Updated several dependencies including anthropics/claude-code-action, click, zensical, ty and eclipse-temurin.
- CI Improvements: Introduced a check to fail the merge if Greptile scores the head commit below 5/5.
- macOS Compatibility: The build now leaves macOS-14 support.
What's Changed
- fix(release): build the image with a pinned Rust and leave macos-14 by @vitali87 in #3559
- feat(evals): add ColGrep as a third arm in the retrieval benchmark by @vitali87 in #3539
- ci: fail the merge when Greptile scores the head commit below 5/5 by @vitali87 in #3558
- feat(signature): read JavaScript headers for change_signature by @vitali87 in #3511
- feat(signature): write JavaScript headers and call sites by @vitali87 in #3512
- feat(signature): change the signature of a JavaScript function or method by @vitali87 in #3513
- build(deps): bump anthropics/claude-code-action from 1.0.264 to 1.0.265 by @dependabot[bot] in #3561
- build(deps): bump rust from 1.97.0-slim-trixie to 1.99.1-slim-trixie by @dependabot[bot] in #3562
- build(deps-dev): bump maturin from 1.15.0 to 1.16.0 by @dependabot[bot] in #3563
- build(deps): bump click from 8.4.2 to 8.5.0 by @dependabot[bot] in #3564
- build(deps-dev): bump zensical from 0.0.72 to 0.0.73 by @dependabot[bot] in #3565
- build(deps-dev): bump ty from 0.0.92 to 0.0.95 by @dependabot[bot] in #3566
- build(deps): bump eclipse-temurin from
2d5d5e9to83f4a7fin /.oss-scanner by @dependabot[bot] in #3567 - fix(security): ask git which git directory a write would land in by @vitali87 in #3569
- fix(signature): carry a bare old Python parameter whose name is not ASCII by @vitali87 in #3568
- fix(security)!: harden the MCP server's file tools and HTTP transport by @vitali87 in #3557
Full Changelog: v0.4.19...v0.5.0