You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: src/langsmith/agent-server-changelog.mdx
+10Lines changed: 10 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -11,6 +11,16 @@ rss: true
11
11
12
12
[Agent Server](/langsmith/agent-server) is an API platform for creating and managing agent-based applications. It provides built-in persistence, a task queue, and supports deploying, configuring, and running assistants (agentic workflows) at scale. This changelog documents all notable updates, features, and fixes to Agent Server releases.
13
13
14
+
<Updatelabel="2026-04-10"tags={["agent-server"]}>
15
+
## v0.7.100
16
+
17
+
- Implemented background deletion of checkpoints to improve thread deletion and pruning performance, reducing I/O pressure and enhancing efficiency.
18
+
- Bumped `@hono/node-server` from 1.19.12 to 1.19.13 to fix a security issue with the Serve Static Middleware.
19
+
- Updated hono from version 4.12.9 to 4.12.12, including critical security patches for middleware and utilities.
20
+
- Upgraded the hono library to version 4.12.12, addressing several security vulnerabilities.
21
+
- Implemented strict version locking for build dependencies to ensure consistency across builds.
Copy file name to clipboardExpand all lines: src/langsmith/sandbox-sdk.mdx
+54Lines changed: 54 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -487,6 +487,60 @@ async def main():
487
487
token =await svc.get_token()
488
488
```
489
489
490
+
## Trace sandbox activity
491
+
492
+
Pass LangSmith tracing environment variables through the `env` parameter on `run()` to send traces from code running inside a sandbox. Call `flush()` before the process exits to ensure all traces are delivered.
const result =awaitsandbox.run("python3 my_agent.py", { env: tracingEnv });
530
+
console.log(result.stdout);
531
+
} finally {
532
+
awaitsandbox.delete();
533
+
}
534
+
```
535
+
536
+
</CodeGroup>
537
+
538
+
Inside the sandbox, any LangSmith-instrumented code (`@traceable`, LangChain, LangGraph) automatically picks up the tracing configuration from the injected environment variables.
539
+
540
+
<Warning>
541
+
Always call `flush()` before the sandbox process exits — `langsmith.Client().flush()` in Python or `await new Client().flush()` in TypeScript. Without it, traces may be lost because the container is destroyed when the command finishes.
542
+
</Warning>
543
+
490
544
## Error handling
491
545
492
546
Both SDKs provide typed exceptions for specific error handling:
Copy file name to clipboardExpand all lines: src/oss/deepagents/backends.mdx
+46-8Lines changed: 46 additions & 8 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -27,6 +27,7 @@ This page explains how to:
27
27
-[choose a backend](#specify-a-backend),
28
28
-[route different paths to different backends](#route-to-different-backends),
29
29
-[implement your own virtual filesystem](#use-a-virtual-filesystem) (e.g., S3 or Postgres),
30
+
-[set permissions](#permissions) on filesystem access,
30
31
:::js
31
32
-[add policy hooks](#add-policy-hooks),
32
33
[work with binary and multimodal files](#multimodal-and-binary-files),
@@ -42,11 +43,11 @@ Here are a few prebuilt filesystem backends that you can quickly use with your d
42
43
43
44
| Built-in backend | Description |
44
45
|---|---|
45
-
|[Default](#statebackend-ephemeral)|`agent = create_deep_agent()` <br></br> Ephemeral in state. The default filesystem backend for an agent is stored in `langgraph` state. Note that this filesystem only persists _for a single thread_. |
46
-
|[Local filesystem persistence](#filesystembackend-local-disk)|`agent = create_deep_agent(backend=FilesystemBackend(root_dir="/Users/nh/Desktop/"))` <br></br>This gives the deep agent access to your local machine's filesystem. You can specify the root directory that the agent has access to. Note that any provided `root_dir` must be an absolute path. |
47
-
|[Durable store (LangGraph store)](#storebackend-langgraph-store)|`agent = create_deep_agent(backend=StoreBackend())` <br></br>This gives the agent access to long-term storage that is _persisted across threads_. This is great for storing longer term memories or instructions that are applicable to the agent over multiple executions. |
48
-
|[Sandbox](/oss/deepagents/sandboxes)|`agent = create_deep_agent(backend=sandbox)` <br></br>Execute code in isolated environments. Sandboxes provide filesystem tools plus the `execute` tool for running shell commands. Choose from Modal, Daytona, Deno, or local VFS. |
49
-
|[Local shell](#localshellbackend-local-shell)|`agent = create_deep_agent(backend=LocalShellBackend(root_dir=".", env={"PATH": "/usr/bin:/bin"}))` <br></br>Filesystem and shell execution directly on the host. No isolation—use only in controlled development environments. See [security considerations](#localshellbackend-local-shell) below. |
46
+
|[Default](#statebackend-ephemeral)|`agent = create_deep_agent(model="openai:gpt-5.4")` <br></br> Ephemeral in state. The default filesystem backend for an agent is stored in `langgraph` state. Note that this filesystem only persists _for a single thread_. |
47
+
|[Local filesystem persistence](#filesystembackend-local-disk)|`agent = create_deep_agent(model="openai:gpt-5.4", backend=FilesystemBackend(root_dir="/Users/nh/Desktop/"))` <br></br>This gives the deep agent access to your local machine's filesystem. You can specify the root directory that the agent has access to. Note that any provided `root_dir` must be an absolute path. |
48
+
|[Durable store (LangGraph store)](#storebackend-langgraph-store)|`agent = create_deep_agent(model="openai:gpt-5.4", backend=StoreBackend())` <br></br>This gives the agent access to long-term storage that is _persisted across threads_. This is great for storing longer term memories or instructions that are applicable to the agent over multiple executions. |
49
+
|[Sandbox](/oss/deepagents/sandboxes)|`agent = create_deep_agent(model="openai:gpt-5.4", backend=sandbox)` <br></br>Execute code in isolated environments. Sandboxes provide filesystem tools plus the `execute` tool for running shell commands. Choose from Modal, Daytona, Deno, or local VFS. |
50
+
|[Local shell](#localshellbackend-local-shell)|`agent = create_deep_agent(model="openai:gpt-5.4", backend=LocalShellBackend(root_dir=".", env={"PATH": "/usr/bin:/bin"}))` <br></br>Filesystem and shell execution directly on the host. No isolation—use only in controlled development environments. See [security considerations](#localshellbackend-local-shell) below. |
50
51
|[Composite](#compositebackend-router)| Ephemeral by default, `/memories/` persisted. The Composite backend is maximally flexible. You can specify different routes in the filesystem to point towards different backends. See Composite routing below for a ready-to-paste example. |
51
52
52
53
@@ -342,7 +343,7 @@ Namespace components must contain only alphanumeric characters, hyphens, undersc
342
343
## Specify a backend
343
344
344
345
:::python
345
-
- Pass a backend instance to `create_deep_agent(backend=...)`. The filesystem middleware uses it for all tooling.
346
+
- Pass a backend instance to `create_deep_agent(model=..., backend=...)`. The filesystem middleware uses it for all tooling.
346
347
- The backend must implement `BackendProtocol` (for example, `StateBackend()`, `FilesystemBackend(root_dir=".")`, `StoreBackend()`).
347
348
- If omitted, the default is `StateBackend()`.
348
349
:::
@@ -368,6 +369,7 @@ from deepagents import create_deep_agent
368
369
from deepagents.backends import CompositeBackend, StateBackend, FilesystemBackend
369
370
370
371
agent = create_deep_agent(
372
+
model="openai:gpt-5.4",
371
373
backend=CompositeBackend(
372
374
default=StateBackend(),
373
375
routes={
@@ -400,7 +402,7 @@ Behavior:
400
402
401
403
Notes:
402
404
- Longer prefixes win (for example, route `"/memories/projects/"` can override `"/memories/"`).
403
-
- For StoreBackend routing, ensure a store is provided via `create_deep_agent(store=...)` or provisioned by the platform.
405
+
- For StoreBackend routing, ensure a store is provided via `create_deep_agent(model=..., store=...)` or provisioned by the platform.
404
406
405
407
## Use a virtual filesystem
406
408
@@ -544,9 +546,43 @@ Postgres-style outline:
544
546
-`grep` can fetch candidate rows by extension or last modified time, then scan lines (skip rows where `mime_type` is binary) → return `GrepResult`
545
547
:::
546
548
549
+
## Permissions
550
+
551
+
Use [permissions](/oss/deepagents/permissions) to declaratively control which files and directories the agent can read or write. Permissions apply to the built-in filesystem tools and are evaluated before the backend is called.
552
+
553
+
:::python
554
+
```python
555
+
from deepagents import create_deep_agent, FilesystemPermission
For the full set of options including rule ordering, subagent permissions, and composite backend interactions, see the [permissions guide](/oss/deepagents/permissions).
582
+
547
583
## Add policy hooks
548
584
549
-
Enforce enterprise rules by subclassing or wrapping a backend.
585
+
For custom validation logic beyond path-based allow/deny rules (rate limiting, audit logging, content inspection), enforce enterprise rules by subclassing or wrapping a backend.
550
586
551
587
Block writes/edits under selected prefixes (subclass):
552
588
@@ -792,6 +828,7 @@ from deepagents import create_deep_agent
792
828
from deepagents.backends import CompositeBackend, StateBackend, StoreBackend
0 commit comments