
AWS’s Strands team released Strands Harness v0.1.0 on September 21 — a fully assembled, open-source agent that costs $56 per task versus Claude Code’s $248 on Terminal-Bench 2.1, using the same Fable 5 model. The headline number is striking, but the actual story is more interesting: the savings come from context management, not a better model. That matters for anyone paying Claude Code rates to run batch automation jobs.
What Strands Harness Actually Is
Strands Harness isn’t a new framework you assemble from parts. It’s a pre-wired agent you install and run. One call to create_harness() gives you an agent with shell access, file read/write/edit, web search, session persistence, long-term memory, and a helper agent for subtask delegation — all built in, all on by default.
It ships for Python (3.10+) and TypeScript (Node.js 20+) under Apache 2.0, and runs against any LLM you hand it: Amazon Bedrock (default), Anthropic, OpenAI, Google, Ollama for local models, or LiteLLM as a proxy.
from strands_harness import create_harness
# Default: Bedrock with Claude Opus 4.8
agent = create_harness()
agent("Find the slowest test in this repo and explain why it's slow")
# One line to switch providers
agent = create_harness(model="anthropic/claude-sonnet-5")
Sessions persist by default. The harness writes each conversation to ./.agent/sessions. Pass a session ID to resume a prior run:
agent = create_harness(session={"id": "api-design"})
agent("Which of those approaches would you pick for an external-facing API, and why?")
Why It’s Cheaper: Context Compaction
The cost difference isn’t magic — it’s three context management rules applied consistently during long-running loops:
- Tool output truncation: Any tool result over ~1,500 tokens gets truncated before it enters the context window.
- Compaction at 85% capacity: When the context window hits 85% full, the harness summarizes older turns and migrates bulky tool results to disk, leaving only a short reference pointer in context.
- In-loop recovery: If overflow still occurs, the harness handles it mid-loop without crashing.
Long-running agents bleed tokens by carrying full tool outputs and conversation history through every iteration. Claude Code doesn’t fix this because it’s designed for interactive sessions where you’re watching — not batch loops where no one is. Strands Harness is built for the latter.
Benchmark Results
AWS benchmarked across six standard evaluations: ALFWorld, ContextBench, GAIA, WebShop, τ³-bench, and Terminal-Bench 2.1. Across all six, Strands Harness used 28% fewer tokens than other harnesses at comparable accuracy.
On Terminal-Bench 2.1 — 89 trials, Fable 5 model:
- Strands Harness: $56.29/task, 69.7% accuracy
- Claude Code: $248.05/task, 61.8% accuracy
Worth noting: DeepSeek Harness was more token-efficient overall, but at lower accuracy. These are also vendor-run benchmarks. Terminal-Bench 2.1 measures long-running autonomous shell tasks — a genuinely different workload from Claude Code’s interactive coding sessions.
When to Use It (and When Not To)
Strands Harness makes sense for:
- Batch automation — CI log triage, test analysis, codebase audits
- DevOps workflows that run unattended for minutes or hours
- Back-office data processing that needs persistent memory across sessions
- Cost-sensitive applications where Claude Code per-task rates are unsustainable
It doesn’t replace Claude Code for interactive coding. If you’re iterating on a function with a model, reading output, and adjusting your approach in real time, Claude Code’s tighter feedback loop is the right tool. Strands Harness is for when you fire off a task and come back to a result.
The AWS Default Worth Knowing
Out of the box, create_harness() routes model calls through Amazon Bedrock. One parameter changes this — but if your team accepts defaults, you’re defaulting to Bedrock. AWS built this to be model-agnostic, and technically it is. The path of least resistance still runs through their infrastructure.
The harness deploys to AWS ECS, Modal, Cloudflare, Azure Container Apps, or Google Cloud Run. AWS infrastructure is not required — but it’s the obvious on-ramp, and that is by design.
Getting Started
Install with pip install strands-harness (Python) or npm install @strands-agents/harness (TypeScript). The official launch post and quickstart docs cover model configuration, session persistence, and MCP server integration. The GitHub repo is strands-agents/harness-sdk.
If your agent workload involves long-running loops, multiple tool calls per task, and costs you care about — run the benchmarks on your own tasks before committing to anything. The 77% figure is real in the right workload. In the wrong one, you’re just running a different harness.













