Highlights
Until this release, deepagents shipped a single set of prompts, tools, and middleware tuned to work across all model families. Today's headline change is harness profiles — a declarative override layer for the parts of the harness that vary per model (system-prompt prefix/suffix, tool inclusion and naming, middleware selection, subagent configuration, skills). ProviderProfile shapes how resolve_model builds the client; HarnessProfile / HarnessProfileConfig shape how create_deep_agent assembles the agent. Both are keyed by provider ("openai") or full provider:model spec ("openai:gpt-5.4"), and registrations are additive — your call site doesn't change when you swap models.
We currently ship built-ins for OpenAI and Anthropic out of the box, drawn directly from each vendor's published prompting guides (Codex's apply_patch / shell_command conventions, Claude's tool-result reflection and active-investigation patterns, etc.). On a curated tau2-bench subset, applying these profiles produced a 10–20 point lift over the default harness (GPT-5.3 Codex: 33% -> 53%; Claude Opus 4.7: 43% -> 53%). Third-party plugins can register via the deepagents.provider_profiles and deepagents.harness_profiles entry points.
See the profiles documentation for the full field surface, merge semantics, and plugin packaging.
Features
Bug Fixes
- Normalize Windows backslash paths before
PurePosixPathprocessing (#1859) (e1c1d50) - Preserve CRLF line endings in sandbox edit (#2899) (291aebe)
- Support read-your-writes in
StateBackend(#2991) (0924869) - Treat boundary-truncated UTF-8 in
read()prefix check as text (#2980) (c36ebc7) - Use
configurabledirectly instead of tracing context for subagent tagging (#2845) (bd6ec6b)
Performance Improvements
Thanks to our community contributors: @SeongBeomLEE, @pawel-twardziak
Internal maintainers: @sydney-runkle, @vishnu-ssuresh, @DanielKneipp, @hntrl, @kevinbfrank, @ccurme, @jacoblee93, @mdrxy