How it works
A task has separate inference and evaluation stages:- Load and prepare. AgentCompass reads
instance_id, repository, base commit, problem statement, requirements, and any newly introduced interface from the dataset. A provider recipe normally selects the task’s prebaked image and exposes its repository at/app. - Apply the refined data. AgentCompass loads the complete task data from
swebench_pro_verified.jsonlinopencompass/SWEBench-Pro-Verified. - Apply anti-hacking controls. AgentCompass removes evaluation test files, rebuilds the repository as a fresh commit with its Git history erased, blocks code-hosting domains through a blacklist, and filters and anonymizes task metadata such as
instance_id. - Run the coding agent. A harness such as mini-SWE-agent or OpenHands receives the issue and edits the checked-out repository. It must write the final unified diff to
/app/patch.txtwhen using the standard recipe layout. - Start a fresh evaluation environment. Inference changes are not trusted as the evaluation workspace. AgentCompass starts a new environment from the task image, resets
/apptobase_commit, and applies the patch. - Run the official instance scripts. The benchmark loads the task’s
run_script.shandparser.pyfrom the localrun_scripts/<instance_id>/tree, downloading missing scripts fromSWE-bench_Pro-os. The parser turns test logs into structured results. - Decide resolution. A task is
resolved=trueonly when every requiredFAIL_TO_PASSandPASS_TO_PASStest appears in the passed-test set.
Environments
This benchmark currently cannot run on Daytona or Modal because neither provider supports blacklists; they support only whitelists or complete outbound-network blocking (Daytona network limits, Modal sandbox networking). Docker is currently the only public provider that can enforce a blacklist; see Network Configuration.Parameters
Pass benchmark configuration via--benchmark-params '{...}', or through benchmark.params in a YAML file given to --config; the CLI wins on shared keys.
Parameter reference
| Parameter | Type | Default | Choices / values | Description |
|---|---|---|---|---|
prepare_mode | string | git_clone | git_clone / prebaked | How the inference repository is prepared. Built-in provider recipes normally replace this with prebaked. |
workspace_root | string | /app | absolute environment path | Root used for task workspaces before recipe overrides. |
repo_url_template | string | https://github.com/{repo}.git | template containing {repo} | Repository clone URL used in git_clone mode. |
scripts_dir | string | "" | local directory | Controller-side directory containing <instance_id>/run_script.sh and parser.py. Empty resolves to the data directory’s run_scripts/. |
dockerfiles_dir | string | "" | local directory | Controller-side official Dockerfile root used to recover task environment exports. Empty resolves under the data directory. |
evaluation_repo_dir | string | /app | absolute environment path | Repository path in the evaluation image; recipes keep it at /app. |
evaluation_workspace_dir | string | /app | absolute environment path | Directory where the patch, scripts, logs, and parser output are staged during evaluation. |
eval_timeout | int | 3600 | integer ≥ 1 | Timeout for the official evaluation command, in seconds. |
sample_ids | list / string / null | null | valid instance ids | Optional exact task filter. Unknown ids fail fast. |
agentcompass run, not a --benchmark-params field. This benchmark does not expose a split parameter: it loads the public test split.
Inference, model, and evaluation controls
eval_timeout controls only the fresh run_script.sh and parser evaluation after patch collection. It cannot extend inference. Thinking/reasoning belongs in --model-params; use the protocol/provider form documented for mini-SWE-agent or OpenHands.
Run examples
Replace<instance-id> with an instance_id from the public dataset.
Recommended harness
mini-SWE-agent is the recommended harness for SWE-bench Pro. It uses the benchmark-specific mini-SWE-agent configuration and executes repository commands in the task environment.- Smoke test (single task end-to-end)
- Custom parameters
- AgentCompass recommended config
Run one task to verify inference, patch collection, and official evaluation end to end.
Other optional harnesses
OpenHands is also supported. The following single-task command exposes its independent model-request, terminal-command, agent-loop, whole-task, and evaluation limits:Outputs
Aggregate metrics
The Metric Contract declares binarycorrect, derived from the evaluator’s resolved decision. At k=1 it produces the native series. With k>1, avg produces both correct.avg@k and correct.pass@k; pass produces only correct.pass@k and can stop early. Read the human-readable output in summary.md and the canonical report in metrics.json. See Metrics and Aggregation.
Per-task details (details/)
Per-task detail JSON files are written underresults/swebench_pro_verified/<model>/<run>/details/. The attempt record contains:
status=completed does not by itself mean the issue was solved. Use metrics.correct and meta.benchmark.eval_raw_data.resolved for resolution, and inspect error, Benchmark metadata, and Harness telemetry for run, parser, or evaluation failures.