Skip to content

Back to the catalog

JFrog: Keep your Agents Under Control with agent-belt
jfrog.comtool

JFrog: Keep your Agents Under Control with agent-belt

JFrog open-sourced agent-belt, an Apache 2.0 CLI eval framework that black-box tests real coding-agent CLIs (Claude Code, Codex, Cursor, Copilot, Gemini, Goose, OpenCode) as subprocesses against version-controlled JSON scenarios with rule-based checks and separate LLM-judge scoring. It targets the non-determinism problem in agentic coding — model/CLI updates silently breaking tool selection or MCP behavior — by measuring pass^k across repeated trials, phrasing variants, and multi-judge consensus, with CI-gating exit codes, Docker sandboxing for untrusted-agent runs, and manifest file-locking for concurrent eval runs. It's positioned as complementary to agent governance: governance restricts what an agent can touch, agent-belt verifies whether its actions and outputs are actually correct.

TL;DR JFrog open-sourced agent-belt, a black-box CLI eval/regression framework that scores real coding-agent CLIs (Claude Code, Cursor, Codex, Copilot, Gemini, Goose, OpenCode) against versioned scenarios using rules plus separate LLM-judge scoring, with pass^k trials and CI gating to catch agent-behavior drift before customers do.
Document

What it is

agent-belt — an Apache-2.0, JFrog-built CLI eval framework, open-sourced (per the post, "today"). It runs a coding-agent CLI you already installed and authed as a black-box subprocess against a real workspace with your MCP servers and skills wired up. Seven bundled agents: claude-code, codex, copilot, cursor, gemini, goose, opencode. Ships four exporters, sandbox providers (host/docker), and one plugin contract across every extension point.

Getting started

pip install agent-belt
belt quickstart claude-code

The post claims "minutes to a verdict" assuming the target CLI is already installed and authed.

How scenarios work

Scenarios are version-controlled JSON with multi-turn turns. The concrete assertion vocabulary the summary doesn't spell out:

  • tools_invoked_any — AND-of-OR: a list of inner lists; each inner list is "any of these" (absorbs naming variance like query_events vs query_usage), and every category must be touched. Uses full MCP tool names, e.g. mcp__billing__query_events.
  • contains — substring checks on a turn's output.
  • max_llm_turns — turn budget (12 in the example).
  • files_modified_exact — an allow-set; any extra file modified fails the turn.
  • git_diff_contains — asserts diff substance, not just that a file was touched.
  • state_expect: { capture_git_diff: true } — captures the diff as state.
  • flags — per-turn CLI flags passed through, e.g. ["--permission-mode", "acceptEdits"].
  • llm_scorer_instruction — per-scenario rubric biasing the default trajectory and response_quality dimensions. The post positions this as where negative constraints live that rules can't express ("don't reach for issue_credit", "don't promise a refund"), including hard-fail-on-tool-call semantics.

Two scoring modes combine (rules + LLM); the post also names multi-judge consensus as a scoring feature (text cuts off before detailing it).

Why it differs

The post's explicit contrast: LLM-eval frameworks score a model on a prompt; observability platforms score a function you wrapped in their SDK; trajectory frameworks build their own agent loop (so the unit under test is theirs); coding-agent benchmarks freeze a dataset. agent-belt instead drives the shipped CLI unchanged, so identical scenarios and scoring run across agents that share nothing — "one diff to compare them on your repo on the same day."

Caveats

The post is upfront: it "won't stop the agent from doing the wrong thing" — it's detection, not enforcement. The fetched text is truncated mid-sentence at the scoring-modes section, so the rules/LLM combination and multi-judge details aren't fully given here.

Technologies named here

  • GPT-5.5
  • Claude Code
  • Cursor
  • Codex
  • Model Context Protocol
  • Docker
  • JFrog
  • agent-belt
  • Agent Skills Registry
  • AI Catalog
  • AI Gateway
  • belt doctor
  • belt quickstart
  • Claude Code 2.1.132
  • Cursor 2026.05.05-84a231c
  • MCP Registry

Techniques named here

  • Docker sandboxing
  • LLM-as-judge scoring
  • Multi-judge majority vote
  • Repeated trials (pass^k)

Concepts named here

  • Black-box CLI evaluation
  • Error taxonomy
  • Evidence files
  • Governance versus eval
  • Non-determinism of agent evaluation
  • Separate judge