Skip to content

Releases: kacigaya/crocode

CroCode v0.6.0

Choose a tag to compare

@kacigaya kacigaya released this 03 Nov 09:55
  • Static analysis: OpenGrep scans the changed files in an offline sandbox before each review. The agent receives results on added lines as hints, confirms real issues, and drops false positives. The new Static analysis tab on the review page lists them. A pull request cannot hide code with .semgrepignore files or nosemgrep comments.
  • Review controls: admins can retry a failed or cancelled review and cancel a queued or running one. Failed and cancelled reviews show a plain reason and a next step.
  • Agent health and usage: the overview shows whether each agent CLI answers in the sandbox, and each agent's review count, median run time, token usage, and models. Review pages show agent time and tokens.
  • Weekly security digest: an opt-in Slack-compatible webhook gets new, fixed, and overdue Dependabot alerts every 7 days. The database stores the URL encrypted. Delivery connects only to public addresses.
  • Claude model list: the model picker shows versioned Claude models with their names, from the Anthropic Models API.

Upgrade from v0.5.0

  1. Rebuild the sandbox image: sudo docker build -t crocode-sandbox:latest docker/sandbox. It now bundles OpenGrep and the rules.
  2. Run crocode migrate with MIGRATION_DATABASE_URL before starting the API and worker. Compose runs the migration service first. Migrations 0004 and 0005 add usage, health, digest, and static analysis columns and tables.
  3. Optional: set CROCODE_SAST=off to skip static analysis, or sast: false in .crocode.yml for one repository. A scan adds about 30 s per review with runc and about 90 s with runsc.
  4. The digest needs the read-only Dependabot alerts App permission. Its URL is encrypted with a key derived from the GitHub App private key. After you rotate that key, enter the URL again.
  5. Codex now runs with --json. Recheck agent startup behavior if you pin another Codex version.

See the configuration guide, the security model, and the API contract.

Rules license

The bundled opengrep-rules use LGPL-2.1 with the Commons Clause. The clause does not grant the right to sell a product or service whose value derives mainly from the rules. CroCode code stays Apache-2.0. See the image notes before you offer CroCode as a paid service.

Validation

These checks pass: Rust format and Clippy, all 89 Rust tests including the database integration tests, all six OSV tool tests, both Compose configurations, web lint and type checks, all 49 web tests, the production build, the docs build and export, and the standalone smoke tests. Codex review passes found 13 defects across the release PRs, and all are fixed. A live check under runsc confirmed the static analysis scan.

Known dependency advisory

The lint toolchain still includes minimatch 3.1.5 and 10.2.6, affected by GHSA-g3hv-75wg-m249 / CVE-2026-118764. OSV found no advisories in the public Rust dependency graph, including the new tokio-rustls, webpki-roots, and ring crates.

Full changelog

CroCode v0.5.0

Choose a tag to compare

@kacigaya kacigaya released this 02 Nov 23:43
  • Dashboard insights: see open pull requests, review totals, success rate, finding severity, and median review time. Review pages show PR metadata, findings, and run history.
  • Settings and model picker: installation settings have their own tab. Choose from models reported by enabled agent harnesses, or enter a model name manually.
  • Vulnerability dashboard: inspect open Dependabot alerts by repository. Filter by CVE or GHSA text, repository, package, severity, dependency scope, and patch availability.
  • Security coverage: distinguish readable alerts, denied access, unavailable repositories, rate limits, timeouts, and failed requests. Last-success history is bounded and resets on API restart.
  • Fix priority queue: rank matching alerts by severity, then known EPSS probability, then patch availability. Missing scores stay unknown. Filters and ranks apply to the current repository page.

Upgrade from v0.4.0

  1. Run crocode migrate with MIGRATION_DATABASE_URL before starting the API and worker. Compose runs the migration service before runtime services. This creates the agent_models table.
  2. To use the vulnerability dashboard, add Dependabot alerts: Read-only to the GitHub App and approve the permission for each installation. The signed-in user must also have security-alert access. Enable Dependabot alerts on the repositories.
  3. API clients must send a user token to /api/v1/agents.

See GitHub App setup and the API contract. Coverage measures alert access; it does not confirm that dependency scanning is enabled. EPSS estimates exploitation probability and does not prove active exploitation.

Validation

Rust format and Clippy checks, all 68 Rust tests including database integration tests, all six OSV tool tests, web lint and type checks, all 44 web tests, the production build, standalone smoke tests, docs build and export, and both Compose configurations pass. Release review found no concrete defects.

Known dependency advisory

The lint toolchain still includes minimatch 3.1.5 and 10.2.6, affected by GHSA-g3hv-75wg-m249 / CVE-2026-118764. No dependency versions changed in this release. OSV found no advisories in the public Rust dependency graph.

Full changelog

CroCode v0.4.0

Choose a tag to compare

@kacigaya kacigaya released this 02 Nov 18:46

Breaking change: restricted database role

The API and worker now connect with crocode_runtime. This role can read and write data. It cannot change tables. Startup rejects a DATABASE_URL role with superuser, create-database, create-role, or RLS-bypass rights.

Before you upgrade an existing database volume:

  1. Add CROCODE_DB_PASSWORD and MIGRATION_DATABASE_URL to .env.
  2. Follow database setup and upgrades.
  3. Keep the existing database volume.

Compose stops with a clear error until both variables are set.

Agent setup skill

Open the repository in Claude Code or Codex and ask it to set up CroCode. The crocode-setup skill guides the agent through a new install or the database role upgrade above. The agent asks before sudo commands and never shows secrets. See the skill.

Changes

  • Migrations: the new crocode migrate command applies migrations. A Compose migrate service runs it before the API and worker start.
  • Retention: the worker deletes finished reviews after 30 days. It deletes the reviews of deleted installations on the next pass.
  • OSV tools: agents can look up package versions and advisories through api.osv.dev. See configuration.
  • YAML parser: serde-saphyr replaces serde_yaml_ng. This removes the unmaintained unsafe-libyaml (RUSTSEC-2024-0449). The minimum Rust version is now 1.89.
  • Setup: the default GitHub App name is CroCode Bot with a random suffix, because GitHub App names are unique across GitHub. The logo step has a copy button for the badge color and opens the app settings in a new tab.

Validation

  • Rust format and Clippy checks passed. All 55 Rust tests passed, including the database tests on Postgres 17.
  • OSV tool tests passed: 6 of 6.
  • Web lint, type checks, 34 tests, production build, docs build, and docs export passed.
  • Both Compose configurations are valid with .env.example.

CroCode v0.3.0

Choose a tag to compare

@kacigaya kacigaya released this 02 Nov 16:43

Agent fallback

  • Set CROCODE_FALLBACK_AGENT=auto for Claude/Codex fallback in both directions. Both agents must be enabled. Each attempt can switch once; the fallback uses its default model.
  • Keep a fixed fallback by setting an agent name. Fallback remains disabled when unset.
  • Use a dedicated ChatGPT login directory for Codex subscription access. Credential refreshes are serialized and tokens are redacted from review output.
  • Run Codex under gVisor with a pinned Bubblewrap loopback compatibility patch. Filesystem and network isolation remain enabled.

Rebuild the API, worker, and sandbox image before enabling these options. See configuration and sandbox checks.

Validation

  • All 50 Rust tests, including 11 database tests, passed with format and Clippy checks.
  • Web lint, type checks, 33 tests, production build, standalone smoke tests, docs export, and Compose checks passed.
  • PR CI built server and sandbox images on AMD64 and ARM64. Local ARM64 isolation probes and a live Claude-to-Codex review passed.
  • Bubblewrap build tests: one passed; five namespace tests skipped in the build environment. The compatibility patch is proposed upstream.

Existing dependency advisories

The scan checked 807 public package versions. These documented advisories remain:

  • unsafe-libyaml 0.2.11: RUSTSEC-2024-0449, unmaintained. OSV provides no CVE alias, severity, or fixed version.
  • Development lint dependency minimatch 3.1.5 and 10.2.6: GHSA-g3hv-75wg-m249, CVE-2026-118764. Affected range: 0 to before 11.0.1; fixed in 11.0.1. Supplied severity: CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:L/SC:N/SI:N/SA:N.

The scan excludes container OS packages and dependencies embedded in agent binaries.

CroCode v0.2.0

Choose a tag to compare

@kacigaya kacigaya released this 02 Nov 15:24

New features

  • Review findings appear next to the reviewed file diff. Suggested changes show the lines they replace when a stored patch is available.
  • Review pages group findings by file and show severity counts in a compact layout.
  • The dashboard supports light and dark themes.
  • Dashboard accounts show GitHub names and avatars.
  • Public guides are available on GitHub Pages at https://kacigaya.github.io/crocode/.

Fixes

  • Save findings and patches in one transaction. Read both from one database snapshot.
  • Preserve empty context lines and respect hunk bounds when matching findings to a patch.
  • Use the plain finding list when a file path cannot be represented safely in a patch header.

Upgrade

  • Rebuild the API, worker, and dashboard together. The API applies migration 0002_review_files.sql at startup.
  • Existing reviews keep their findings. They use the plain list because their patches were not stored.
  • Patches over 256 KiB per file are not stored.

Validation

  • Rust format and Clippy checks passed. All 43 Rust tests passed, including 10 database tests.
  • Web lint, type checks, 33 tests, production build, and standalone smoke checks passed.
  • Static docs build and export checks passed.
  • Both Compose configurations passed validation.
  • Server, sandbox, and dashboard images built on ARM64. The server command help passed a container check. AMD64 image validation runs in CI; this host has no emulator.

Known dependency advisories

The application lockfile scan checked 807 public package versions. Existing advisories remain documented in docs/security.md and docs/dashboard.md:

The scan does not cover container OS packages or dependencies embedded in agent binaries.

CroCode v0.1.0

Choose a tag to compare

@kacigaya kacigaya released this 02 Nov 13:20

Highlights

  • First-run setup page. The dashboard creates the GitHub App for you. Open the /setup link from the dashboard logs, confirm the public address and app name, and approve on GitHub. CroCode stores the credentials in a shared volume. The API and worker start on their own. No manual .env editing for GitHub.
  • Claude subscription support. Set CLAUDE_CODE_OAUTH_TOKEN from claude setup-token instead of an API key. The worker then runs Claude with --safe-mode, which still skips repository CLAUDE.md files, hooks, plugins, skills, and MCP servers.

Other changes

  • The landing page feature cards drop their icons and use a wider grid.
  • The repo now ships the app logo at web/public/crocode-app-logo.png. GitHub has no API for app logos, so the done page links to the upload step.

Upgrade notes

  • Existing setups keep working. Environment variables take precedence over the stored app.
  • Compose adds a crocode-config volume. Rebuild the dashboard image so /config gets the right owner.
  • The dashboard container can write to that volume, so it holds the GitHub App private key. To keep the private key out of the dashboard, configure the app with environment variables.