deepagents==0.7.0
langchain-ai/deepagentsdeepagents==0.7.0Jul 29, 2026by github-actions[bot]
AI Summary
A major release featuring opt-in TodoListMiddleware, lean default prompts, virtual mode defaults for backends, and a recursive delete filesystem tool.
Key Highlights
- TodoListMiddleware is now opt-in (removed by default)
- Default agent prompts are now lean/empty
- Filesystem backends default to `virtual_mode=True`
- Agents now see a recursive `delete` filesystem tool
- write_file now creates files if missing instead of erroring
Breaking Changes
- `create_deep_agent` no longer includes `TodoListMiddleware` by default
- Default agent prompts are now lean; `BASE_AGENT_PROMPT` is deprecated
- Built-in tool-usage prompt constants are removed
- `FilesystemBackend` and `LocalShellBackend` default to `virtual_mode=True`
- Agents see a destructive recursive `delete` filesystem tool
- `write_file` behavior changed (no longer errors on missing files)
- Removed deprecated backend compatibility shims and methods
- Removed deprecated `SummarizationMiddleware` constructor
- Agent-facing `ls` and `glob` output renders empty results as text
- `read_file` output format changed (removed line numbers)
New Features
- Middleware replacement support
- FilesystemMiddleware tool allowlist
- FsToolName literal for tool configuration
Full Release Notes
See [the docs](https://docs.langchain.com/oss/python/releases/changelog#deepagents-v0-7-0) for curated release notes.
### ⚠ BREAKING CHANGES
* `create_deep_agent` no longer includes `TodoListMiddleware` by default, the `write_todos` tool, `todos` state channel, and todo-planning prompt are now absent. Pass `middleware=[TodoListMiddleware()]` to restore them on the main agent; add it to each `SubAgent`'s middleware to restore them there. ([#4929](https://github.com/langchain-ai/deepagents/issues/4929)) ([9340518](https://github.com/langchain-ai/deepagents/commit/9340518a26c4287f9ad0c543edc9b69106c15154))
* Default agent prompts are now lean: the authored base prompt is empty, and tool-usage prose that duplicates tool schemas is trimmed. `BASE_AGENT_PROMPT` is deprecated (removal in `deepagents==0.9.0`) but remains importable and still returns the previous authored prompt verbatim; pass it as `create_deep_agent(system_prompt=BASE_AGENT_PROMPT)` to restore the old behavior. ([#4859](https://github.com/langchain-ai/deepagents/issues/4859)) ([#4979](https://github.com/langchain-ai/deepagents/issues/4979)) ([a8d1b32](https://github.com/langchain-ai/deepagents/commit/a8d1b32aa4136d0498ba7b48367c8001ac462bd0)) ([d9f54fc](https://github.com/langchain-ai/deepagents/commit/d9f54fc09925171c6c0a933abd33507f85e8851c))
* The built-in tool-usage prompt constants `TASK_SYSTEM_PROMPT`, `ASYNC_TASK_SYSTEM_PROMPT`, `SUMMARIZATION_SYSTEM_PROMPT`, `FILESYSTEM_SYSTEM_PROMPT`, and `EXECUTION_SYSTEM_PROMPT` are removed, and the `system_prompt` default on `SubAgentMiddleware`, `AsyncSubAgentMiddleware`, `SummarizationToolMiddleware`, and `create_summarization_tool_middleware` is now `None`, which injects no prose. Pass your own string to restore prompt text. ([#4859](https://github.com/langchain-ai/deepagents/issues/4859)) ([a8d1b32](https://github.com/langchain-ai/deepagents/commit/a8d1b32aa4136d0498ba7b48367c8001ac462bd0))
* `FilesystemBackend` and `LocalShellBackend` now default to `virtual_mode=True`. Filesystem paths are anchored under `root_dir`, `..` traversal is rejected, and paths resolving outside `root_dir` raise `ValueError`. Previously an unspecified `virtual_mode` emitted a deprecation warning and fell back to `False`, where absolute host paths were used as-is and `..` could escape `root_dir`. Pass `virtual_mode=False` explicitly to restore the old filesystem behavior. ([#4541](https://github.com/langchain-ai/deepagents/issues/4541)) ([540a0fa](https://github.com/langchain-ai/deepagents/commit/540a0fa7eb9a88d82413cf10a5cb5c807d491385))
* Agents now see a destructive, recursive `delete` filesystem tool whenever the backend supports it, and filesystem permissions classify `delete` as a write operation — so an existing rule allowing writes to a path also authorizes recursively deleting that subtree unless a narrower deny or interrupt rule covers the target. Because recursive deletes affect descendants, deny and interrupt checks use bulk path overlap instead of exact-path matching. To keep the previous behavior, add a deny or interrupt rule, or omit `delete` from `FilesystemMiddleware(tools=...)`. Missing paths return a not-found error, `CompositeBackend` reports an unsupported-operation error when a routed sub-backend cannot delete, and the tool is hidden from the model entirely when the backend itself does not implement it. ([#3659](https://github.com/langchain-ai/deepagents/issues/3659)) ([#3691](https://github.com/langchain-ai/deepagents/issues/3691)) ([#3765](https://github.com/langchain-ai/deepagents/issues/3765)) ([#3851](https://github.com/langchain-ai/deepagents/issues/3851)) ([f2a21ec](https://github.com/langchain-ai/deepagents/commit/f2a21ec1606c2560bd2fd5765409a05c2a44edee))
* `write_file` can now create a file if it is missing and replaces it entirely if it already exists, instead of returning a file-exists error. The `write_file` tool description no longer requires reading the file first. There is no "create-only" compatibility mode. Workflows, prompts, tests, or guardrails that relied on the file-exists error to force `edit_file` usage or to protect existing content must omit `write_file`, add explicit permission or interrupt rules, or use `edit_file` where preserving existing content matters. ([#4109](https://github.com/langchain-ai/deepagents/issues/4109)) ([2506fcc](https://github.com/langchain-ai/deepagents/commit/2506fccfac0e09b656d5e2fefe23162f1c762331))
* Removed deprecated backend compatibility shims. Callers must pass concrete `BackendProtocol` instances (not factories), configure `StoreBackend` with an explicit `namespace`, and use the current `ls` / `glob` / `grep` / `ReadResult` APIs. ([#4541](https://github.com/langchain-ai/deepagents/issues/4541)) ([540a0fa](https://github.com/langchain-ai/deepagents/commit/540a0fa7eb9a88d82413cf10a5cb5c807d491385))
* The deprecated `files_update` attribute and constructor keyword are removed from `WriteResult` and `EditResult`. Custom backends must stop passing `files_update=`, and callers must stop reading `result.files_update`; state writes are emitted directly by `StateBackend`. ([#4541](https://github.com/langchain-ai/deepagents/issues/4541)) ([540a0fa](https://github.com/langchain-ai/deepagents/commit/540a0fa7eb9a88d82413cf10a5cb5c807d491385))
* Removed the deprecated `BackendProtocol` methods `ls_info`, `als_info`, `glob_info`, `aglob_info`, `grep_raw`, and `agrep_raw`. Use `ls` / `glob` / `grep` and their async counterparts. ([#4541](https://github.com/langchain-ai/deepagents/issues/4541)) ([540a0fa](https://github.com/langchain-ai/deepagents/commit/540a0fa7eb9a88d82413cf10a5cb5c807d491385))
* `SummarizationMiddleware(history_path_prefix=...)` was removed and now raises `TypeError`. Configure `CompositeBackend(artifacts_root=...)` instead. ([#4541](https://github.com/langchain-ai/deepagents/issues/4541)) ([540a0fa](https://github.com/langchain-ai/deepagents/commit/540a0fa7eb9a88d82413cf10a5cb5c807d491385))
* Agent-facing `ls` and `glob` tool output now renders empty results as `No files found` instead of `[]`; direct backend APIs continue to return structured empty `LsResult` and `GlobResult` values. Callers that parse tool output should update those checks. ([#3709](https://github.com/langchain-ai/deepagents/issues/3709)) ([efafd1e](https://github.com/langchain-ai/deepagents/commit/efafd1e070aeae8901ee3123c7fcbf1815a33c4f))
* `read_file` no longer renders raw text with a fixed-width `cat -n`-style line-number gutter and tab separator. Line and continuation markers are dynamically aligned and separated from source content by two spaces, and the `LINE_NUMBER_WIDTH` constant is removed from `deepagents.backends.utils` and `deepagents.middleware.filesystem`. Callers that parse raw tool output should update those parsers. ([#4561](https://github.com/langchain-ai/deepagents/issues/4561)) ([cf057b4](https://github.com/langchain-ai/deepagents/commit/cf057b4bcdb77ad67014f7dabe71e71f2366c95e))
### Features
* Custom middleware passed to `create_deep_agent(..., middleware=[...])` can replace a default middleware instance when `.name` matches, so defaults such as `SummarizationMiddleware` can be overridden without also excluding the built-in instance. ([#4251](https://github.com/langchain-ai/deepagents/issues/4251)) ([90c8472](https://github.com/langchain-ai/deepagents/commit/90c8472ae226394a186bf2075459645c2056db7d))
* `FilesystemMiddleware(tools=[...])` accepts a keyword-only allowlist of built-in filesystem tools, typed by the newly exported `FsToolName` literal (`"ls"`, `"read_file"`, `"write_file"`, `"edit_file"`, `"delete"`, `"glob"`, `"grep"`, `"execute"`); pass `"all"` or omit the argument to keep every tool. A list must include `"read_file"` or the constructor raises `ValueError`. Omitted built-in tools are non-executable, and custom user tools are unaffected. ([#4325](https://github.com/langchain-ai/deepagents/issues/4325)) ([#4698](https://github.com/langchain-ai/deepagents/issues/4698)) ([704a70d](https://github.com/langchain-ai/deepagents/commit/704a70dddbd59b8c6abf658a4211c76bce1445f0)) ([9709525](https://github.com/langchain-ai/deepagents/commit/970952550e8f53cd89a64a4ee98969ce757693ff))
* Shorten LLM-facing descriptions for the `task` tool and filesystem tools (`read_file`, `grep`, `edit_file`, `glob`, `execute`). ([#5009](https://github.com/langchain-ai/deepagents/issues/5009)) ([761f5f0](https://github.com/langchain-ai/deepagents/commit/761f5f0882dee186f2700f3c903829a5542626fe))
* `GrepResult` and `GlobResult` now carry a `truncated` flag so supporting backends can return valid partial results when a match cap or backend deadline is reached; agent-facing tool output adds a note telling the model to narrow the search. `FilesystemBackend` returns partial `grep` and `glob` results on its backend timeout rather than erroring, while other backend or middleware timeouts may still return errors. Its `glob` also gains brace expansion such as `*.{py,md}` (already supported by the state and store backends). ([#4063](https://github.com/langchain-ai/deepagents/issues/4063)) ([ef591e7](https://github.com/langchain-ai/deepagents/commit/ef591e7a86b13bbdcb0fdedd45a8f1fe33573839))
* The agent-facing `grep` match cap is configurable: `FilesystemMiddleware(grep_max_count=...)` sets the default (`1000`; `None` disables it) and the model can override it per call through the tool's new `max_count` argument. `grep` / `agrep` on `BackendProtocol` and all built-in backends accept a keyword-only `max_count`. Local ripgrep output is streamed and terminated once the cap is reached. Direct `FilesystemBackend.grep()` callers can request surrounding lines with keyword-only `context_lines`. ([#4570](https://github.com/langchain-ai/deepagents/issues/4570)) ([#4706](https://github.com/langchain-ai/deepagents/issues/4706)) ([8e86f5e](https://github.com/langchain-ai/deepagents/commit/8e86f5ecc8908762a2c748880287f190dde70600)) ([65230df](https://github.com/langchain-ai/deepagents/commit/65230df6f91d2bbe5f83d4d938da6bfac52363a1))
* Paginated built-in `read_file` responses report the returned source-line range and next `offset`; total and remaining line counts are included when the backend knows the file length. Resume offsets remain safe when sandbox or middleware limits shorten the visible page. ([#4540](https://github.com/langchain-ai/deepagents/issues/4540)) ([8321194](https://github.com/langchain-ai/deepagents/commit/83211940a2cdf4c52ac21a6cde8647716a998504))
* Optional video frame extraction for `read_file`, enabled by the new `deepagents[video]` extra. Video files are sampled into JPEG frames, with `offset` and `limit` interpreted as seconds. Without the extra, existing generic video/file content-block behavior remains. ([#4094](https://github.com/langchain-ai/deepagents/issues/4094)) ([b927147](https://github.com/langchain-ai/deepagents/commit/b927147d026749c6c790bb06c9853515dabf579c))
* `FilesystemMiddleware` can capture oversized `execute` tool output directly inside the sandbox artifact path on compatible, opted-in `BaseSandbox` implementations to reduce round trips; `LangSmithSandbox` opts in by default. ([#4230](https://github.com/langchain-ai/deepagents/issues/4230)) ([02f5bd7](https://github.com/langchain-ai/deepagents/commit/02f5bd7bc02f2baaf5a1eefce7d686ba62493647))
* Automatically enable Fireworks prompt-cache session affinity when a compatible `langchain-fireworks` installation is available. ([#4598](https://github.com/langchain-ai/deepagents/issues/4598)) ([5d878bf](https://github.com/langchain-ai/deepagents/commit/5d878bf1341afc3f96398733b7ef18eec4b66139))
* Add a built-in NVIDIA Nemotron 3 Ultra harness profile and NVIDIA NIM app-origin attribution. ([#4192](https://github.com/langchain-ai/deepagents/issues/4192)) ([#4455](https://github.com/langchain-ai/deepagents/issues/4455)) ([d5a60ec](https://github.com/langchain-ai/deepagents/commit/d5a60ece7379c37c81edcef2cd6c2811ddc90c9a)) ([4cb4749](https://github.com/langchain-ai/deepagents/commit/4cb47491b024991322b7c24062c58cbcdc26a727))
* `RubricMiddleware` now accepts any positive `max_iterations` cap instead of enforcing a hard upper bound. ([#4405](https://github.com/langchain-ai/deepagents/issues/4405)) ([d6692a7](https://github.com/langchain-ai/deepagents/commit/d6692a7c713490f170b17510d613e02ee37574ab))
### Bug Fixes
* Keep fields marked with `PrivateStateAttr`, including fields declared through `create_deep_agent(state_schema=...)`, out of subagent inputs and returned parent-state updates. ([#4587](https://github.com/langchain-ai/deepagents/issues/4587)) ([a4662c0](https://github.com/langchain-ai/deepagents/commit/a4662c07296c378045006c9f45ed1d12bd1a9da6))
* Preserve `ContextT` through the `create_deep_agent(..., middleware=[...])` type annotation so type checkers accept context-aware middleware when a matching `context_schema` is passed. ([#4055](https://github.com/langchain-ai/deepagents/issues/4055)) ([7be76c7](https://github.com/langchain-ai/deepagents/commit/7be76c752117e6e61dcdc931ea5147261fad6768))
* Accept YAML list values as well as comma-separated strings for skill `allowed-tools` frontmatter, and make skill truncation warnings actionable with field name, path, length, configured limit, and impact. ([#4140](https://github.com/langchain-ai/deepagents/issues/4140)) ([#4141](https://github.com/langchain-ai/deepagents/issues/4141)) ([d62534c](https://github.com/langchain-ai/deepagents/commit/d62534c86b87a91aca16c6bfb71209232d69a6ec)) ([2f5f5b8](https://github.com/langchain-ai/deepagents/commit/2f5f5b85793d944167a42e8d5b8e0a11bb1e3932))
* Align filesystem instructions with the tools that remain after allowlist and backend-capability filtering, so agents no longer reference hidden `grep`/`glob` tools or prohibit equivalent shell search when dedicated search tools are unavailable. ([#4920](https://github.com/langchain-ai/deepagents/issues/4920)) ([#4921](https://github.com/langchain-ai/deepagents/issues/4921)) ([d3650c7](https://github.com/langchain-ai/deepagents/commit/d3650c7b1f5ca968abd72345a511719d4ba65907)) ([b65cc00](https://github.com/langchain-ai/deepagents/commit/b65cc0076caab2e35c07598055b8b338a47e5e1a))
* Propagate default-backend failures from `CompositeBackend.ls("/")` and `CompositeBackend.als("/")` instead of returning successful route-only listings. ([#4925](https://github.com/langchain-ai/deepagents/issues/4925)) ([4c3b166](https://github.com/langchain-ai/deepagents/commit/4c3b1667035e3be6ae88cf8c431e0d6f143d2ff4))
* Correct `CompositeBackend.glob` / `CompositeBackend.aglob` routing so explicit default-backend paths such as `/tools` do not also return files from routed backends such as `/memories`. ([#4531](https://github.com/langchain-ai/deepagents/issues/4531)) ([cbdb0a7](https://github.com/langchain-ai/deepagents/commit/cbdb0a7df8cd4bbacff9ca7ac2e42232ef290c10))
* Propagate default- and routed-backend failures from root `CompositeBackend.glob(..., path=None)` / `aglob(..., path=None)` and `path="/"` searches instead of returning incomplete successful results. ([#4063](https://github.com/langchain-ai/deepagents/issues/4063)) ([ef591e7](https://github.com/langchain-ai/deepagents/commit/ef591e7a86b13bbdcb0fdedd45a8f1fe33573839))
* Constrain sandbox `glob` and slash-pattern `grep` searches to their declared search root by treating leading `/` as search-root-relative, rejecting `..` traversal segments, and filtering symlink-resolved matches outside the root. ([#4588](https://github.com/langchain-ai/deepagents/issues/4588)) ([c6c7213](https://github.com/langchain-ai/deepagents/commit/c6c72139b3ee7d090f657dd19ced59a9bbc41140))
* Unify `grep(..., glob=...)` include-glob semantics across filesystem and in-memory backends: basename patterns like `*.py` match at any depth, and slash-containing patterns like `src/**/*.py` match relative paths consistently. ([#3936](https://github.com/langchain-ai/deepagents/issues/3936)) ([feab6e0](https://github.com/langchain-ai/deepagents/commit/feab6e0b3762aa42fa458af16d0a3e8d04d8b075))
* Improve agent-facing `grep` descriptions and no-match hints to steer regex-looking patterns toward literal searches, route slash-containing sandbox include-globs correctly, and shorten default search timeouts so bad patterns and huge trees return guidance faster. ([#4168](https://github.com/langchain-ai/deepagents/issues/4168)) ([b1dbf5e](https://github.com/langchain-ai/deepagents/commit/b1dbf5e66ac81a9fd95abf6987ba058bb14a5edf))
* 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](https://github.com/langchain-ai/deepagents/issues/4321)) ([d77496b](https://github.com/langchain-ai/deepagents/commit/d77496b969b9c59ce1c7c44e2085e5388e12c306))
* Improve rubric grader failure diagnostics with configured model, structured-output strategy, and integer HTTP status when available. ([#4938](https://github.com/langchain-ai/deepagents/issues/4938)) ([#4967](https://github.com/langchain-ai/deepagents/issues/4967)) ([f51d3a0](https://github.com/langchain-ai/deepagents/commit/f51d3a0145a0301317c36b0ae15263007dacd6f1)) ([bca70aa](https://github.com/langchain-ai/deepagents/commit/bca70aa1f30ee1472809894e2474a76e4ff2f8bd))
* Emit `max_iterations_reached` as the terminal `RubricMiddleware` status when the iteration cap is exhausted, instead of a final `needs_revision` event that will not loop. ([#4406](https://github.com/langchain-ai/deepagents/issues/4406)) ([a51c8d2](https://github.com/langchain-ai/deepagents/commit/a51c8d2b1723d143439a1466f5a49a52c442bdfc))
* Handle missing async subagent URLs consistently in `check_async_task` and `cancel_async_task`. ([#3967](https://github.com/langchain-ai/deepagents/issues/3967)) ([b0d92c0](https://github.com/langchain-ai/deepagents/commit/b0d92c0f38ca0aa037b56e26b2b0d322cdd07856))
### Performance Improvements
* Run LangSmith sandbox commands over the async client. ([#5061](https://github.com/langchain-ai/deepagents/issues/5061)) ([0d08747](https://github.com/langchain-ai/deepagents/commit/0d0874710615df2c89c3c30e56bfdabb73b44d99))
---
Thanks to our community contributors: @kavishkartha05 ([Twitter](https://x.com/kavishkartha31), [LinkedIn](https://linkedin.com/in/kavish-kartha)), @nv-kasikritc
Internal maintainers: @nick-hollon-lc, @imnishitha, @hntrl, @srimanthtangedipalli-eng, @ramon-langchain, @jkennedyvz, @ccurme, @davibinboi, @mdrxy
Released by: @mdrxy
<details>
<summary>Git log since deepagents==0.6.12</summary>
This commit history includes changes to this package. Commits are listed newest first.
- [`77f0d9a`](https://github.com/langchain-ai/deepagents/commit/77f0d9a362e49b595b7d04d87ee66d01f61a6ee8) release(deepagents): 0.7.0 (#4297)
- [`fef1ff3`](https://github.com/langchain-ai/deepagents/commit/fef1ff33e99cd6cb7b2cbbea8db8df453866dc5e) chore(deps): raise `langchain-anthropic` minimum to 1.5.3 (#5120)
- [`0d08747`](https://github.com/langchain-ai/deepagents/commit/0d0874710615df2c89c3c30e56bfdabb73b44d99) perf(langsmith-sandbox): run LangSmith sandbox commands over the async client (#5061)
- [`c0afec5`](https://github.com/langchain-ai/deepagents/commit/c0afec5ab7e9860d1572002c1f689f95dd15cf8e) feat(code): add Claude Opus 5 support (#5049)
- [`761f5f0`](https://github.com/langchain-ai/deepagents/commit/761f5f0882dee186f2700f3c903829a5542626fe) feat(sdk): trim built-in tool descriptions (#5009)
- [`d9f54fc`](https://github.com/langchain-ai/deepagents/commit/d9f54fc09925171c6c0a933abd33507f85e8851c) refactor(sdk,evals): deprecate legacy base agent prompt (#4979)
- [`9340518`](https://github.com/langchain-ai/deepagents/commit/9340518a26c4287f9ad0c543edc9b69106c15154) feat(sdk,code,quickjs)!: make the `ToDoListMiddleware` list opt-in (#4929)
- [`9a24baf`](https://github.com/langchain-ai/deepagents/commit/9a24bafcd245a197856641c844dc2ed51275a528) refactor(sdk): correct prompt docs and harden rubric diagnostics (#4989)
- [`d046427`](https://github.com/langchain-ai/deepagents/commit/d046427b536c8ddbce5d804d6ae8b860511a9b44) revert(code,sdk): revert `SystemPromptConfig` (#4969)
- [`f51d3a0`](https://github.com/langchain-ai/deepagents/commit/f51d3a0145a0301317c36b0ae15263007dacd6f1) fix(sdk): diagnose rubric grader structured output errors (#4938)
- [`bca70aa`](https://github.com/langchain-ai/deepagents/commit/bca70aa1f30ee1472809894e2474a76e4ff2f8bd) fix(sdk): include HTTP status in rubric grader errors (#4967)
- [`a8d1b32`](https://github.com/langchain-ai/deepagents/commit/a8d1b32aa4136d0498ba7b48367c8001ac462bd0) feat(sdk,code,quickjs): lean system prompt by default, restorable (#4859)
- [`540a0fa`](https://github.com/langchain-ai/deepagents/commit/540a0fa7eb9a88d82413cf10a5cb5c807d491385) refactor(sdk)!: remove deprecated backend compatibility shims (#4541)
- [`9f92d2f`](https://github.com/langchain-ai/deepagents/commit/9f92d2fcbc15df0558946e55ff66f374c7a5bc6c) build(sdk): raise dependency minimums (#4936)
- [`4c3b166`](https://github.com/langchain-ai/deepagents/commit/4c3b1667035e3be6ae88cf8c431e0d6f143d2ff4) fix(sdk): propagate root listing errors from `CompositeBackend` (#4925)
- [`d3650c7`](https://github.com/langchain-ai/deepagents/commit/d3650c7b1f5ca968abd72345a511719d4ba65907) fix(sdk): condition large-result guidance on visible tools (#4920)
- [`b65cc00`](https://github.com/langchain-ai/deepagents/commit/b65cc0076caab2e35c07598055b8b338a47e5e1a) fix(sdk): condition `execute` search guidance on visible tools (#4921)
- [`a8e4768`](https://github.com/langchain-ai/deepagents/commit/a8e476807cf1da54acecffd3614a0d64e4705e29) docs(sdk): explain backend file operation semantics (#4919)
- [`9e8d478`](https://github.com/langchain-ai/deepagents/commit/9e8d478e2d1a8c50d77a121a2ccd51b584e0841d) refactor(sdk): extract prompt caching helpers (#4892)
- [`8326177`](https://github.com/langchain-ai/deepagents/commit/8326177f280e4ae0fe10f8dfcd8c646507950bb6) chore(deps): bump pyasn1 from 0.6.3 to 0.6.4 in /libs/deepagents (#4897)
- [`8400b89`](https://github.com/langchain-ai/deepagents/commit/8400b89a0273e6bf21a712f104ef26e0ff0acd1c) chore(deps-dev): bump setuptools from 82.0.1 to 83.0.0 in /libs/evals (#4896)
- [`b708207`](https://github.com/langchain-ai/deepagents/commit/b70820724301065b7e5fcb2486faf17fa4fde53a) chore(deps-dev): bump pillow from 12.2.0 to 12.3.0 in /libs/evals (#4876)
- [`29d6046`](https://github.com/langchain-ai/deepagents/commit/29d6046998d47c5070799a0ff8395474579ae2e8) chore(deps): require `langchain-quickjs` 0.3.3 (#4802)
- [`9709525`](https://github.com/langchain-ai/deepagents/commit/970952550e8f53cd89a64a4ee98969ce757693ff) fix(sdk): remove excluded tools from `ToolNode` (#4698)
- [`e61156d`](https://github.com/langchain-ai/deepagents/commit/e61156d2b29f1f25a80aa8e2c10b479444accb6b) test(sdk): handle expected middleware warnings (#4717)
- [`5d878bf`](https://github.com/langchain-ai/deepagents/commit/5d878bf1341afc3f96398733b7ef18eec4b66139) feat(sdk): use `FireworksPromptCachingMiddleware` for session affinity (#4598)
- [`8e86f5e`](https://github.com/langchain-ai/deepagents/commit/8e86f5ecc8908762a2c748880287f190dde70600) feat(sdk): add total match cap and streaming to grep (#4570)
- [`cf057b4`](https://github.com/langchain-ai/deepagents/commit/cf057b4bcdb77ad67014f7dabe71e71f2366c95e) fix(sdk)!: disambiguate `read_file` line gutters (#4561)
- [`8321194`](https://github.com/langchain-ai/deepagents/commit/83211940a2cdf4c52ac21a6cde8647716a998504) feat(sdk): report remaining lines for paginated reads (#4540)
- [`65230df`](https://github.com/langchain-ai/deepagents/commit/65230df6f91d2bbe5f83d4d938da6bfac52363a1) feat(sdk): support surrounding lines in filesystem grep results (#4706)
- [`a4662c0`](https://github.com/langchain-ai/deepagents/commit/a4662c07296c378045006c9f45ed1d12bd1a9da6) fix(sdk): isolate private custom state from subagents (#4587)
- [`44daa24`](https://github.com/langchain-ai/deepagents/commit/44daa243bb960f9c1ecb1b5ee734153e9430b0da) chore(repo): raise LangChain integration minimums (#4601)
- [`c6c7213`](https://github.com/langchain-ai/deepagents/commit/c6c72139b3ee7d090f657dd19ced59a9bbc41140) fix(langsmith-sandbox): sandbox glob path boundary checks (#4588)
- [`d5a60ec`](https://github.com/langchain-ai/deepagents/commit/d5a60ece7379c37c81edcef2cd6c2811ddc90c9a) feat(sdk): add NVIDIA Nemotron 3 Ultra harness profile (#4192)
- [`cbdb0a7`](https://github.com/langchain-ai/deepagents/commit/cbdb0a7df8cd4bbacff9ca7ac2e42232ef290c10) fix(sdk): isolate composite glob paths (#4531)
- [`7be76c7`](https://github.com/langchain-ai/deepagents/commit/7be76c752117e6e61dcdc931ea5147261fad6768) fix(sdk): preserve `ContextT` on `create_deep_agent` `middleware` (#4055)
- [`d62534c`](https://github.com/langchain-ai/deepagents/commit/d62534c86b87a91aca16c6bfb71209232d69a6ec) fix(sdk): accept list format for skill `allowed-tools` (#4140)
- [`2f5f5b8`](https://github.com/langchain-ai/deepagents/commit/2f5f5b85793d944167a42e8d5b8e0a11bb1e3932) fix(sdk): make skill truncation warnings actionable (#4141)
- [`56c5a5e`](https://github.com/langchain-ai/deepagents/commit/56c5a5e0e64cabe5fbe27308d3ddfd8a8fd9eb22) feat(sdk): improve system prompt configurability (#4437)
- [`4cb4749`](https://github.com/langchain-ai/deepagents/commit/4cb47491b024991322b7c24062c58cbcdc26a727) feat(sdk): add NVIDIA NIM app-origin attribution (#4455)
- [`b1dbf5e`](https://github.com/langchain-ai/deepagents/commit/b1dbf5e66ac81a9fd95abf6987ba058bb14a5edf) fix(sdk): improve grep literal guidance and sandbox glob routing (#4168)
- [`ef591e7`](https://github.com/langchain-ai/deepagents/commit/ef591e7a86b13bbdcb0fdedd45a8f1fe33573839) feat(sdk): bound grep/glob with partial results and a `truncated` flag (#4063)
- [`d77496b`](https://github.com/langchain-ai/deepagents/commit/d77496b969b9c59ce1c7c44e2085e5388e12c306) fix(sdk): sandbox not-found contract and glob deny over-blocking on delete (#4321)
- [`704a70d`](https://github.com/langchain-ai/deepagents/commit/704a70dddbd59b8c6abf658a4211c76bce1445f0) feat(sdk): add `enabled_tools` allowlist to `FilesystemMiddleware` (#4325)
- [`feab6e0`](https://github.com/langchain-ai/deepagents/commit/feab6e0b3762aa42fa458af16d0a3e8d04d8b075) fix(sdk): unify `grep` include-glob semantics across backends (#3936)
- [`b0d92c0`](https://github.com/langchain-ai/deepagents/commit/b0d92c0f38ca0aa037b56e26b2b0d322cdd07856) fix(sdk): move `get_sync()` inside try in `check_async_task` and `cancel_async_task` (#3967)
- [`d4ba51c`](https://github.com/langchain-ai/deepagents/commit/d4ba51c46384265b00131fb05429486804103196) docs(sdk): expand `profiles` package docstring with directory layout (#4041)
- [`b927147`](https://github.com/langchain-ai/deepagents/commit/b927147d026749c6c790bb06c9853515dabf579c) feat(sdk): optional video frame extraction on `read_file` (#4094)
- [`d6692a7`](https://github.com/langchain-ai/deepagents/commit/d6692a7c713490f170b17510d613e02ee37574ab) feat(code,sdk): add rubric iteration controls (#4405)
- [`a51c8d2`](https://github.com/langchain-ai/deepagents/commit/a51c8d2b1723d143439a1466f5a49a52c442bdfc) fix(sdk): emit terminal rubric iteration status (#4406)
- [`90c8472`](https://github.com/langchain-ai/deepagents/commit/90c8472ae226394a186bf2075459645c2056db7d) feat(sdk): allow users to override default middleware by name (#4251)
- [`02f5bd7`](https://github.com/langchain-ai/deepagents/commit/02f5bd7bc02f2baaf5a1eefce7d686ba62493647) feat(sdk): reduce round trips when offloading large tool results with `sandbox.execute` (#4230)
- [`8e8680b`](https://github.com/langchain-ai/deepagents/commit/8e8680bd01d717b3e639ad205eeb461e52998732) build(deps): refresh dependency minimums (#4331)
- [`23500f4`](https://github.com/langchain-ai/deepagents/commit/23500f45c7d7128ea68421c92be6fb53ca8b6c68) chore(deps): bump langgraph-checkpoint from 4.1.0 to 4.1.1 in /libs/deepagents (#4274)
- [`965cbd5`](https://github.com/langchain-ai/deepagents/commit/965cbd566b019a9ff2e39a35a5dce387660a77db) chore(repo): cut over v0.7 to main (#4280)
</details>