Agent/Orchestration
Evaluating DeepAgents CLI on Terminal Bench 2.0
How DeepAgents CLI performs on Terminal Bench 2.0, achieving ~42.5% accuracy with Claude Sonnet 4.5, and the infrastructure needed for isolated agent evaluation

๐ค Curiosity: How Well Do Coding Agents Actually Perform?
After 8 years of building AI systems in game development, Iโve seen countless demos of coding agents that promise to revolutionize software development. But hereโs the question that keeps nagging at me: How well do these agents actually perform on real-world tasks?
Most agent frameworks show impressive demos, but when you dig deeper, the evaluation story is often missing. Can they handle complex software engineering tasks? Do they work reliably across different domains? Whatโs the actual baseline we should expect?
Curiosity: How do we measure coding agent performance in a way thatโs both comprehensive and reproducible?
The Core Question: DeepAgents CLI is a terminal-powered coding agent built on the Deep Agents SDK. But how do we evaluate it systematically, and what does its performance tell us about the state of coding agents today?
๐ Retrieve: Understanding DeepAgents CLI and Terminal Bench
What is DeepAgents CLI?
The DeepAgents CLI is a terminal-powered coding agent thatโs open source, written in Python, and model agnostic. It provides an interactive terminal interface with:
- Shell execution capabilities
- Filesystem tools (read, write, edit files)
- Web search functionality
- Task planning via todos
- Persistent memory storage across sessions
Quick Start:
1
2
export ANTHROPIC_API_KEY="your-api-key"
uvx deepagents-cli
The agent proposes changes with diffs for your approval before modifying files, providing a safety layer for production use.
The Challenge: Running Isolated Evaluations
Before we can evaluate anything, we need to solve a fundamental problem: how do we run our agent in a clean, isolated environment every time?
A coding agent modifies files, installs packages, and runs commandsโeach test could leave artifacts that affect subsequent tests. We need:
- Isolation: Each test starts from a clean slate
- Parallelization: Ability to run many tests concurrently
- Safety: Guarantees that the agent canโt affect your local machine
DeepAgents recently added a sandbox abstraction that allows it to work with different execution environments, but we still need a framework to orchestrate evaluations at scale.
Harbor: Sandboxed Agent Execution
This is where Harbor comes in. Harbor is a framework for evaluating agents in containerized environments at scale, supporting Docker, Modal, Daytona, E2B, and Runloop as sandbox providers.
What Harbor Handles:
| Feature | Description |
|---|---|
| Automatic test execution | Runs benchmark tasks in isolated environments |
| Automated reward scoring | Verifies task completion with reward scores (0 or 1) |
| Registry of pre-built datasets | Includes Terminal Bench and other benchmarks |
| Multi-provider support | Works with Docker, Modal, Daytona, E2B, Runloop |
Harbor handles all the infrastructure complexity of running agents in isolated environments, letting you focus on improving your agent.
DeepAgents-Harbor Integration
We built deepagents-harbor to make evaluation straightforward:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
git clone https://github.com/langchain-ai/deepagents.git
cd libs/harbor
uv sync
# Configure .env with API keys
cp .env.example .env
# Run via Docker
uv run harbor run \
--agent-import-path deepagents_harbor:DeepAgentsWrapper \
--dataset terminal-bench@2.0 \
-n 1 \
--jobs-dir jobs/terminal-bench \
--env docker
# Run at scale via Daytona (requires DAYTONA_API_KEY)
uv run harbor run \
--agent-import-path deepagents_harbor:DeepAgentsWrapper \
--dataset terminal-bench@2.0 \
-n 10 \
--jobs-dir jobs/terminal-bench \
--env daytona
Weโve found Daytona particularly helpful for running evaluations at scale, allowing us to run 40 trials concurrently and significantly speed up the iteration cycle.
Implementation Architecture
Harbor offers a sandbox environment with shell-execution capabilities. We built a HarborSandbox backend that wraps this environment and implements file-system tools on top of shell commands:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
class DeepAgentHarbor(BaseAgent):
async def run(
self,
instruction: str,
environment: BaseEnvironment,
context: AgentContext,
) -> None:
# Create a DeepAgents backend that wraps Harbor's environment
# and provides filesystem tools
backend = HarborSandbox(environment)
# Initialize the DeepAgent CLI with the Harbor backend
agent, _ = create_cli_agent(
model=self._model,
backend=backend,
...
)
# Run the agent
result = await agent.ainvoke(
{"messages": [{"role": "user", "content": instruction}]},
)
The HarborSandbox backend implements filesystem tools (e.g., edit_file, read_file, write_file, ls) on top of Harborโs shell command interface.
What Terminal Bench Tests
Terminal Bench 2.0 includes 89 tasks across domains like software engineering, biology, security, and gaming. It measures how well agents operate in computer environments via the terminal.
Example Tasks:
| Task | Description | Domain |
|---|---|---|
path-tracing | Reverse-engineer C program from rendered image | Software Engineering |
chess-best-move | Find optimal move using chess engine | Gaming |
git-multibranch | Complex git operations with merge conflicts | Software Engineering |
sqlite-with-gcov | Build SQLite with code coverage, analyze reports | Software Engineering |
Tasks have a wide range of difficultyโsome require many actions (e.g., cobol-modernization taking close to 10 minutes with 100+ tool calls) while simpler tasks complete in seconds.
Automated Verification:
Each task includes verification logic that Harbor runs automatically, assigning a reward score (0 for incorrect, 1 for correct) based on whether the agentโs solution meets the task requirements.
graph TB
A[Terminal Bench Task] --> B[Harbor Sandbox]
B --> C[DeepAgents CLI]
C --> D[Agent Execution]
D --> E[File Operations]
D --> F[Shell Commands]
D --> G[Web Search]
E --> H[Task Completion]
F --> H
G --> H
H --> I[Automated Verification]
I --> J{Reward Score<br/>0 or 1}
style C fill:#ff6b6b,stroke:#c92a2a,stroke-width:2px,color:#fff
style B fill:#4ecdc4,stroke:#0a9396,stroke-width:2px,color:#fff
style I fill:#ffe66d,stroke:#f4a261,stroke-width:2px,color:#000
๐ก Innovation: Baseline Results and Production Insights
Baseline Results
We ran the DeepAgents CLI with claude-sonnet-4-5 on Terminal Bench 2.0 across 2 trials, achieving scores of 44.9% and 40.4% (mean: 42.65%). This baseline is on par with other implementations using the same model.
| Trial | Score | Notes |
|---|---|---|
| Trial 1 | 44.9% | Higher performance run |
| Trial 2 | 40.4% | Lower performance run |
| Mean | 42.65% | Baseline performance |
While thereโs considerable sampling variance across runs, this baseline validates that DeepAgents provides a competitive foundation.
Key Insights
What This Tells Us:
- DeepAgents CLI is competitive: At ~42.5%, it performs on par with Claude Code itself, suggesting the framework doesnโt introduce significant overhead
- Sampling variance is real: The 4.5% difference between trials highlights the importance of running multiple evaluations
- Infrastructure matters: Harbor enables systematic evaluation that would be difficult to replicate manually
Production Considerations:
| Aspect | Challenge | Solution |
|---|---|---|
| Isolation | Tests affect each other | Harbor provides containerized sandboxes |
| Scale | Running 89 tasks sequentially is slow | Daytona enables 40 concurrent trials |
| Reproducibility | Results vary across runs | Multiple trials establish baseline variance |
| Safety | Agents could modify local files | Sandboxed execution prevents local impact |
Evaluation Architecture
graph LR
subgraph "Evaluation Pipeline"
A[Terminal Bench Dataset] --> B[Harbor Framework]
B --> C{Environment Provider}
C -->|Docker| D[Docker Containers]
C -->|Daytona| E[Daytona Sandboxes]
C -->|Modal| F[Modal Functions]
C -->|E2B| G[E2B Environments]
C -->|Runloop| H[Runloop Sandboxes]
end
subgraph "Agent Execution"
D --> I[DeepAgents CLI]
E --> I
F --> I
G --> I
H --> I
I --> J[Task Execution]
J --> K[Verification]
K --> L[Reward Score]
end
subgraph "Results"
L --> M[Performance Metrics]
M --> N[Baseline: 42.65%]
end
style I fill:#ff6b6b,stroke:#c92a2a,stroke-width:2px,color:#fff
style B fill:#4ecdc4,stroke:#0a9396,stroke-width:2px,color:#fff
style K fill:#ffe66d,stroke:#f4a261,stroke-width:2px,color:#000
What Worked Well
- Harbor abstraction: The framework handles all the complexity of sandbox management, making evaluation straightforward
- Daytona for scale: Running 40 concurrent trials dramatically speeds up iteration
- Automated verification: Terminal Benchโs built-in verification eliminates manual checking
- Model agnostic design: DeepAgents CLI works with any model, making it easy to compare different backends
Challenges and Tradeoffs
| Challenge | Impact | Mitigation |
|---|---|---|
| Sampling variance | 4.5% difference between trials | Run multiple trials, report mean and variance |
| Task complexity | Some tasks take 10+ minutes | Use parallel execution (Daytona) |
| Cost | Running evaluations requires API keys | Use caching and efficient sandbox providers |
| Reproducibility | Results vary across runs | Document baseline variance, use fixed seeds where possible |
๐ฏ Key Takeaways
- DeepAgents CLI achieves ~42.5% on Terminal Bench 2.0, putting it on par with Claude Code itself
- Harbor enables systematic evaluation by handling sandbox isolation, parallelization, and automated verification
- Infrastructure matters: The ability to run 40 concurrent trials with Daytona dramatically speeds up iteration
- Sampling variance is significant: 4.5% difference between trials highlights the importance of multiple runs
When to Use This Approach
โ Good fit:
- Evaluating coding agents systematically
- Comparing different agent frameworks
- Benchmarking agent performance across domains
- Production agent validation
โ Consider alternatives:
- Quick prototyping (manual testing is faster)
- Single-task evaluation (overhead not worth it)
- Non-terminal agents (Terminal Bench is terminal-specific)
๐ค New Questions This Raises
- How can we systematically analyze agent traces to identify concrete optimizations?
- What patterns emerge in failed tasks? Are there common failure modes we can address?
- How does performance vary across domains? Do agents perform better in software engineering vs. biology tasks?
- Can we improve performance through prompt engineering or agent architecture changes?
Next steps: In upcoming posts, weโll explore how to systematically analyze agent traces and identify concrete optimizations to improve performance.
References
DeepAgents Resources:
- DeepAgents Documentation
- DeepAgents GitHub Repository
- DeepAgents Harbor Integration
- Sandbox Abstraction for DeepAgents
Evaluation Frameworks:
Related Work:
Sandbox Providers:
๐ Summary / ์์ฝ
English Summary
Evaluating DeepAgents CLI on Terminal Bench 2.0 explores how to systematically evaluate coding agents using the DeepAgents CLI framework and Terminal Bench 2.0 benchmark. The post covers:
DeepAgents CLI: A terminal-powered coding agent thatโs open source, Python-based, and model agnostic, providing shell execution, filesystem tools, web search, task planning, and persistent memory.
The Evaluation Challenge: Running agents in clean, isolated environments requires solving isolation, parallelization, and safety problems. Each test must start from a clean slate, run in parallel, and guarantee the agent canโt affect local machines.
Harbor Framework: A framework for evaluating agents in containerized environments at scale, supporting Docker, Modal, Daytona, E2B, and Runloop. It handles automatic test execution, automated reward scoring, and provides a registry of pre-built evaluation datasets.
Terminal Bench 2.0: A benchmark with 89 tasks across software engineering, biology, security, and gaming domains, measuring how well agents operate in terminal environments with automated verification.
Results: DeepAgents CLI with Claude Sonnet 4.5 achieved ~42.5% accuracy (44.9% and 40.4% across 2 trials), putting it on par with Claude Code itself. This validates DeepAgents as a competitive foundation for coding agents.
Key Insights: The evaluation infrastructure (Harbor + Daytona) enables running 40 concurrent trials, dramatically speeding up iteration. Sampling variance (4.5% difference) highlights the importance of multiple runs.
ํ๊ตญ์ด ์์ฝ
DeepAgents CLI๋ฅผ Terminal Bench 2.0์์ ํ๊ฐํ๊ธฐ๋ DeepAgents CLI ํ๋ ์์ํฌ์ Terminal Bench 2.0 ๋ฒค์น๋งํฌ๋ฅผ ์ฌ์ฉํ์ฌ ์ฝ๋ฉ ์์ด์ ํธ๋ฅผ ์ฒด๊ณ์ ์ผ๋ก ํ๊ฐํ๋ ๋ฐฉ๋ฒ์ ํ๊ตฌํฉ๋๋ค. ์ด ๊ธ์ ๋ค์์ ๋ค๋ฃน๋๋ค:
DeepAgents CLI: ์คํ์์ค์ด๋ฉฐ Python ๊ธฐ๋ฐ์ด๊ณ ๋ชจ๋ธ์ ๋ ๋ฆฝ์ ์ธ ํฐ๋ฏธ๋ ๊ธฐ๋ฐ ์ฝ๋ฉ ์์ด์ ํธ๋ก, ์ ธ ์คํ, ํ์ผ์์คํ ๋๊ตฌ, ์น ๊ฒ์, ์์ ๊ณํ, ์๊ตฌ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ ๊ณตํฉ๋๋ค.
ํ๊ฐ์ ๋์ : ๊นจ๋ํ๊ณ ๊ฒฉ๋ฆฌ๋ ํ๊ฒฝ์์ ์์ด์ ํธ๋ฅผ ์คํํ๋ ค๋ฉด ๊ฒฉ๋ฆฌ, ๋ณ๋ ฌํ, ์์ ์ฑ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํด์ผ ํฉ๋๋ค. ๊ฐ ํ ์คํธ๋ ๊นจ๋ํ ์ํ์์ ์์ํ๊ณ , ๋ณ๋ ฌ๋ก ์คํ๋๋ฉฐ, ์์ด์ ํธ๊ฐ ๋ก์ปฌ ๋จธ์ ์ ์ํฅ์ ์ฃผ์ง ์๋๋ก ๋ณด์ฅํด์ผ ํฉ๋๋ค.
Harbor ํ๋ ์์ํฌ: ์ปจํ ์ด๋ํ๋ ํ๊ฒฝ์์ ๋๊ท๋ชจ๋ก ์์ด์ ํธ๋ฅผ ํ๊ฐํ๋ ํ๋ ์์ํฌ๋ก, Docker, Modal, Daytona, E2B, Runloop๋ฅผ ์ง์ํฉ๋๋ค. ์๋ ํ ์คํธ ์คํ, ์๋ํ๋ ๋ณด์ ์ ์ ๊ณ์ฐ์ ์ฒ๋ฆฌํ๋ฉฐ, ์ฌ์ ๊ตฌ์ถ๋ ํ๊ฐ ๋ฐ์ดํฐ์ ๋ ์ง์คํธ๋ฆฌ๋ฅผ ์ ๊ณตํฉ๋๋ค.
Terminal Bench 2.0: ์ํํธ์จ์ด ์์ง๋์ด๋ง, ์๋ฌผํ, ๋ณด์, ๊ฒ์ ๋ฑ ๋ค์ํ ๋๋ฉ์ธ์์ 89๊ฐ์ ์์ ์ ํฌํจํ๋ ๋ฒค์น๋งํฌ๋ก, ํฐ๋ฏธ๋ ํ๊ฒฝ์์ ์์ด์ ํธ๊ฐ ์ผ๋ง๋ ์ ์๋ํ๋์ง ์๋ํ๋ ๊ฒ์ฆ์ผ๋ก ์ธก์ ํฉ๋๋ค.
๊ฒฐ๊ณผ: Claude Sonnet 4.5๋ฅผ ์ฌ์ฉํ DeepAgents CLI๋ ~42.5% ์ ํ๋๋ฅผ ๋ฌ์ฑํ์ต๋๋ค (2ํ ์ํ์์ 44.9%์ 40.4%). ์ด๋ Claude Code ์์ฒด์ ๋๋ฑํ ์ฑ๋ฅ์ผ๋ก, DeepAgents๊ฐ ์ฝ๋ฉ ์์ด์ ํธ๋ฅผ ์ํ ๊ฒฝ์๋ ฅ ์๋ ๊ธฐ๋ฐ์์ ๊ฒ์ฆํฉ๋๋ค.
ํต์ฌ ์ธ์ฌ์ดํธ: ํ๊ฐ ์ธํ๋ผ(Harbor + Daytona)๋ 40๊ฐ์ ๋์ ์ํ์ ๊ฐ๋ฅํ๊ฒ ํ์ฌ ๋ฐ๋ณต ์๋๋ฅผ ํฌ๊ฒ ํฅ์์ํต๋๋ค. ์ํ๋ง ๋ถ์ฐ(4.5% ์ฐจ์ด)์ ์ฌ๋ฌ ๋ฒ ์คํ์ ์ค์์ฑ์ ๊ฐ์กฐํฉ๋๋ค.
Working on something like this?
I take a small number of paid, scoped reviews: AI agent/RAG architecture diagnosis, Unity CI & build-automation audits, and multimodal QA design review. Each one ends in a written findings document.
Work with me