Warning
This is a pre-release version. Install with: pip install deepagents==0.7.0b1
Rolls up alphas 0.7.0a1–0.7.0a8 plus some additional changes not captured in an a9 release (see footer's Git log summary).
Breaking Changes
- Agents created with
create_deep_agentno longer includeTodoListMiddlewareby default, so thewrite_todostool,todosstate channel, and todo-planning prompt are absent unless restored withmiddleware=[TodoListMiddleware()]. (The OpenAI Codex harness profile still opts in automatically.) (#4929) - Default agent prompts are lean: the authored base prompt starts empty, tool-usage prose that duplicates tool schemas is trimmed, and the previous authored base prompt remains available as
DEFAULT_AGENT_PROMPT.BASE_AGENT_PROMPTis deprecated and no longer exported at the package top level. (#4859) (#4979) - Removed deprecated backend compatibility shims. Callers must pass concrete
BackendProtocolinstances (not factories), configureStoreBackendwith an explicitnamespace, and use the currentls/glob/grep/ReadResultAPIs. Removed compatibility symbols includeBackendFactory,BACKEND_TYPES,FileFormat, andUnset, plus the deprecatedruntimeparameters onStateBackendandStoreBackend. New files store stringFileData.content; olderlist[str]content remains readable and is converted when overwritten or edited. (#4541) lsandglobempty-result output is nowNo files foundinstead of[]. Callers that parse empty results should update those checks.read_fileno longer renders raw text with a fixed-widthcat -n-style line-number gutter and tab separator. Line and continuation markers are dynamically aligned and separated from source content by two spaces. Callers that parse raw tool output should update those parsers. (#4561)
Features
- Custom middleware passed to
create_deep_agent(..., middleware=[...])can replace a default middleware instance when.namematches, so defaults such asSummarizationMiddlewarecan be overridden without also excluding the built-in instance. (#4251) - Filesystem backends and middleware support delete, including recursive deletes, with a user-facing delete tool and clear unsupported/not-found errors when a backend cannot perform the operation.
write_filecan overwrite existing files, so agents can replace generated artifacts or apply full-file edits without an intermediate delete. (#4109)FilesystemMiddlewareaccepts a tool allowlist so callers can expose only selected built-in filesystem tools while keepingread_fileavailable and leaving custom user tools unaffected. Omitted built-in tools are non-executable. (#4325) (#4698)- The
deepagents[aws]extra includes Bedrock prompt caching support. (#4108) - Automatically enable Fireworks prompt-cache session affinity when a compatible
langchain-fireworksinstallation is available. (#4598) grepandglobbound large or slow trees by returning valid partial results with atruncatedflag instead of hanging or discarding work on timeout;globalso supports brace expansion such as*.{py,md}on supported backends. (#4063)- Agent-facing
grepdefaults to a 1,000-match cap, streams local ripgrep output, and stops once the cap is reached. DirectFilesystemBackend.grep()callers can request surrounding lines with keyword-onlycontext_lines. (#4570) (#4706) - Paginated
read_fileresponses report the returned source-line range, total and remaining line counts, and the nextoffset, including when reads are shortened by sandbox or middleware limits. (#4540) - Optional video frame extraction for
read_filewhen media dependencies are installed. Video files such as.mp4,.mov,.webm, and.mkvare sampled into JPEG frames, withoffsetandlimitinterpreted as seconds. (#4094) - Sandbox large-result offload for
sandbox.executecaptures oversized command output directly inside the sandbox artifact path to reduce round trips. (#4230) - Built-in NVIDIA adds a built-in Nemotron 3 Ultra harness profile. We also expand with NIM app-origin attribution. (#4455) (#4192)
Bug Fixes
- Keep fields marked with
PrivateStateAttr, including fields declared throughcreate_deep_agent(state_schema=...), out of subagent inputs and returned parent-state updates. (#4587) - Preserve
ContextTthrough thecreate_deep_agent(..., middleware=[...])type annotation so type checkers accept context-aware middleware when a matchingcontext_schemais passed. (#4055) - Accept YAML list values as well as comma-separated strings for skill
allowed-toolsfrontmatter, and make skill truncation warnings actionable with field name, path, length, configured limit, and impact. (#4140) (#4141) - Align filesystem instructions with the tools that remain after allowlist and backend-capability filtering, so agents no longer reference hidden
grep/globtools or prohibit equivalent shell search when dedicated search tools are unavailable. (#4920) (#4921) - Propagate default-backend failures from
CompositeBackend.ls("/")andCompositeBackend.als("/")instead of returning successful route-only listings. (#4925) - Correct
CompositeBackend.glob/CompositeBackend.aglobrouting so explicit default-backend paths such as/toolsdo not also return files from routed backends such as/memories. (#4531) - Constrain sandbox
globand slash-patterngrepsearches to their declared search root by treating leading/as search-root-relative, rejecting..traversal segments, and filtering symlink-resolved matches outside the root. (#4588) - Unify
grep(..., glob=...)include-glob semantics across filesystem and in-memory backends: basename patterns like*.pymatch at any depth, and slash-containing patterns likesrc/**/*.pymatch relative paths consistently. (#3936) - Make
grep's literal-only contract clearer in tool descriptions and no-match hints, route slash-containing sandbox include-globs correctly, and shorten default search timeouts so bad patterns and huge trees return guidance faster. (#4168) - Align sandbox delete behavior with other backends by returning not-found errors for missing paths, and avoid over-blocking unrelated sibling deletes when deny rules use glob patterns. (#4321)
- Emit
max_iterations_reachedas the terminalRubricMiddlewarestatus when the iteration cap is exhausted, instead of a finalneeds_revisionevent that will not loop. (#4406) - Improve rubric grader failure diagnostics with configured model, structured-output strategy, and integer HTTP status when available. (#4938) (#4967)
- Handle missing async subagent URLs consistently in
check_async_taskandcancel_async_task. (#3967)
Thanks to our community contributors: @kavishkartha05 (Twitter, LinkedIn), @nv-kasikritc
Internal maintainers: @nick-hollon-lc, @ccurme, @davibinboi, @mdrxy
Released by: @mdrxy
Released from This commit history includes changes to this package. Commits are listed newest first.
beta/deepagents-0-7-0b1 at commit a631817
Git log since deepagents==0.7.0a8
a631817 hotfix(sdk): beta release 0.7.0b1
d9f54fc refactor(sdk,evals): deprecate legacy base agent prompt (#4979)
9340518 feat(sdk,code,quickjs)!: make the ToDoListMiddleware list opt-in (#4929)
9a24baf refactor(sdk): correct prompt docs and harden rubric diagnostics (#4989)
d046427 revert(code,sdk): revert SystemPromptConfig (#4969)
f51d3a0 fix(sdk): diagnose rubric grader structured output errors (#4938)
bca70aa fix(sdk): include HTTP status in rubric grader errors (#4967)
a8d1b32 feat(sdk,code,quickjs): lean system prompt by default, restorable (#4859)
540a0fa refactor(sdk)!: remove deprecated backend compatibility shims (#4541)
9f92d2f build(sdk): raise dependency minimums (#4936)