Skip to content

feat(code): pluggable third-party sandbox backends - #3842

Merged
Mason Daugherty (mdrxy) merged 6 commits into
mainfrom
mdrxy/code/third-party-sandbox-backends
Jun 11, 2026
Merged

feat(code): pluggable third-party sandbox backends#3842
Mason Daugherty (mdrxy) merged 6 commits into
mainfrom
mdrxy/code/third-party-sandbox-backends

Conversation

@mdrxy

@mdrxy Mason Daugherty (mdrxy) commented Jun 10, 2026

Copy link
Copy Markdown
Member

dcode now supports third-party and internal sandbox backends as first-class providers via entry points or [sandboxes.providers] config, in addition to the built-in providers.


dcode sandbox providers were hard-coded, so every new backend required changes here. This makes providers pluggable: a SandboxRegistry merges curated built-ins (installed as deepagents-code extras), entry-point providers published by third-party packages under deepagents_code.sandbox_providers, and config-declared providers in [sandboxes.providers] (a class_path with the same trust model as model class_path). Provider metadata (SandboxProviderMetadata / SandboxInstallHint) now drives the working directory, snapshot support, and install hints, so _get_provider, get_default_working_dir, and verify_sandbox_deps no longer carry hard-coded maps. The static --sandbox choices are replaced with registry validation that emits install/config guidance for unknown providers; bare --sandbox resolves [sandboxes].default. Config params are forwarded into get_or_create().

Made by Open SWE

Make `dcode` sandbox providers pluggable so external and internal backends
work as first-class providers without code changes here. Adds a sandbox
registry that merges built-in providers (extras), entry-point providers
(`deepagents_code.sandbox_providers`), and config-declared providers
(`[sandboxes.providers]` with a `class_path`, same trust model as model
`class_path`). Replaces the static `--sandbox` choices with registry
validation plus install/config guidance, drives snapshot support and the
working directory from provider metadata, and forwards config `params` to
`get_or_create()`.

Co-authored-by: open-swe[bot] <open-swe@users.noreply.github.com>
@github-actions github-actions Bot added dcode Related to `deepagents-code` feature New feature/enhancement or request for one internal User is a member of the `langchain-ai` GitHub organization size: XL 1000+ LOC labels Jun 10, 2026
@mdrxy
Mason Daugherty (mdrxy) marked this pull request as ready for review June 10, 2026 23:49

@open-swe open-swe Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Open SWE Review found 2 potential issues.

Open in WebView Open SWE trace

Comment thread libs/code/deepagents_code/integrations/sandbox_config.py
Comment thread libs/code/deepagents_code/integrations/sandbox_registry.py Outdated
@mdrxy
Mason Daugherty (mdrxy) merged commit 2b635a7 into main Jun 11, 2026
45 of 47 checks passed
@mdrxy
Mason Daugherty (mdrxy) deleted the mdrxy/code/third-party-sandbox-backends branch June 11, 2026 00:58
Mason Daugherty (mdrxy) added a commit that referenced this pull request Jun 11, 2026
> [!CAUTION]
> Merging this PR will automatically publish to **PyPI** and create a
**GitHub release**.

For the full release process, see
[`.github/RELEASING.md`](https://github.com/langchain-ai/deepagents/blob/main/.github/RELEASING.md).

---

_Everything below this line will be the GitHub release body._

---


##
[0.1.13](deepagents-code==0.1.12...deepagents-code==0.1.13)
(2026-06-11)

### Features

* Pluggable third-party sandbox backends
([#3842](#3842))
([2b635a7](2b635a7))
* Auto-install ripgrep on first run
([#3348](#3348))
([fecf22b](fecf22b))
* `config` command and canonical config manifest
([#3763](#3763))
([79899a3](79899a3))
* Confirm modal for `/install --package`
([#3840](#3840))
([3d75026](3d75026))
* Copy focused input selection on `Ctrl+C`
([#3841](#3841))
([99f782c](99f782c))
* `[retries]` config
([#3772](#3772))
([9334d91](9334d91))
* Show connection state in the status bar
([#3710](#3710))
([3e3e8fe](3e3e8fe))
* Surface LangSmith tracing projects in `LocalContextMiddleware`
([#3836](#3836))
([676abec](676abec))

### Bug Fixes

* Add debug-log guidance for truncated startup errors
([#3849](#3849))
([cd1ef30](cd1ef30))
* Drop lock-key events so Caps Lock in iTerm2 doesn't type
([#3855](#3855))
([110f1a7](110f1a7))
* Hand pointer over splash tracing project link
([#3858](#3858))
([ea7dae5](ea7dae5))
* Keep terminal-default theme on Esc in `/theme` selector
([#3854](#3854))
([c3bc67b](c3bc67b))
* Preserve inherited `PYTHONPATH` for server subprocess
([#3833](#3833))
([4689569](4689569))
* Resolve interpreter PTC allowlist against the runtime tool registry
([#3845](#3845))
([c59a27e](c59a27e))
* Treat multi-line key-event pastes as one input
([#3856](#3856))
([6bb15d4](6bb15d4))

---

_Everything above this line will be the GitHub release body._

---

> [!NOTE]
> A **New Contributors** section is appended to the GitHub release notes
automatically at publish time (see [Release
Pipeline](https://github.com/langchain-ai/deepagents/blob/main/.github/RELEASING.md#release-pipeline),
step 2).

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Mason Daugherty <github@mdrxy.com>
Marcelo5444 pushed a commit to Marcelo5444/deepagents that referenced this pull request Jul 30, 2026
`dcode` now supports third-party and internal sandbox backends as
first-class providers via entry points or `[sandboxes.providers]`
config, in addition to the built-in providers.

---

`dcode` sandbox providers were hard-coded, so every new backend required
changes here. This makes providers pluggable: a `SandboxRegistry` merges
curated built-ins (installed as `deepagents-code` extras), entry-point
providers published by third-party packages under
`deepagents_code.sandbox_providers`, and config-declared providers in
`[sandboxes.providers]` (a `class_path` with the same trust model as
model `class_path`). Provider metadata (`SandboxProviderMetadata` /
`SandboxInstallHint`) now drives the working directory, snapshot
support, and install hints, so `_get_provider`,
`get_default_working_dir`, and `verify_sandbox_deps` no longer carry
hard-coded maps. The static `--sandbox` choices are replaced with
registry validation that emits install/config guidance for unknown
providers; bare `--sandbox` resolves `[sandboxes].default`. Config
`params` are forwarded into `get_or_create()`.

Made by [Open SWE](https://openswe.vercel.app)

---------

Co-authored-by: open-swe[bot] <open-swe@users.noreply.github.com>
Marcelo5444 pushed a commit to Marcelo5444/deepagents that referenced this pull request Jul 30, 2026
> [!CAUTION]
> Merging this PR will automatically publish to **PyPI** and create a
**GitHub release**.

For the full release process, see
[`.github/RELEASING.md`](https://github.com/langchain-ai/deepagents/blob/main/.github/RELEASING.md).

---

_Everything below this line will be the GitHub release body._

---


##
[0.1.13](langchain-ai/deepagents@deepagents-code==0.1.12...deepagents-code==0.1.13)
(2026-06-11)

### Features

* Pluggable third-party sandbox backends
([langchain-ai#3842](langchain-ai#3842))
([2b635a7](langchain-ai@2b635a7))
* Auto-install ripgrep on first run
([langchain-ai#3348](langchain-ai#3348))
([fecf22b](langchain-ai@fecf22b))
* `config` command and canonical config manifest
([langchain-ai#3763](langchain-ai#3763))
([79899a3](langchain-ai@79899a3))
* Confirm modal for `/install --package`
([langchain-ai#3840](langchain-ai#3840))
([3d75026](langchain-ai@3d75026))
* Copy focused input selection on `Ctrl+C`
([langchain-ai#3841](langchain-ai#3841))
([99f782c](langchain-ai@99f782c))
* `[retries]` config
([langchain-ai#3772](langchain-ai#3772))
([9334d91](langchain-ai@9334d91))
* Show connection state in the status bar
([langchain-ai#3710](langchain-ai#3710))
([3e3e8fe](langchain-ai@3e3e8fe))
* Surface LangSmith tracing projects in `LocalContextMiddleware`
([langchain-ai#3836](langchain-ai#3836))
([676abec](langchain-ai@676abec))

### Bug Fixes

* Add debug-log guidance for truncated startup errors
([langchain-ai#3849](langchain-ai#3849))
([cd1ef30](langchain-ai@cd1ef30))
* Drop lock-key events so Caps Lock in iTerm2 doesn't type
([langchain-ai#3855](langchain-ai#3855))
([110f1a7](langchain-ai@110f1a7))
* Hand pointer over splash tracing project link
([langchain-ai#3858](langchain-ai#3858))
([ea7dae5](langchain-ai@ea7dae5))
* Keep terminal-default theme on Esc in `/theme` selector
([langchain-ai#3854](langchain-ai#3854))
([c3bc67b](langchain-ai@c3bc67b))
* Preserve inherited `PYTHONPATH` for server subprocess
([langchain-ai#3833](langchain-ai#3833))
([4689569](langchain-ai@4689569))
* Resolve interpreter PTC allowlist against the runtime tool registry
([langchain-ai#3845](langchain-ai#3845))
([c59a27e](langchain-ai@c59a27e))
* Treat multi-line key-event pastes as one input
([langchain-ai#3856](langchain-ai#3856))
([6bb15d4](langchain-ai@6bb15d4))

---

_Everything above this line will be the GitHub release body._

---

> [!NOTE]
> A **New Contributors** section is appended to the GitHub release notes
automatically at publish time (see [Release
Pipeline](https://github.com/langchain-ai/deepagents/blob/main/.github/RELEASING.md#release-pipeline),
step 2).

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Mason Daugherty <github@mdrxy.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dcode Related to `deepagents-code` feature New feature/enhancement or request for one internal User is a member of the `langchain-ai` GitHub organization size: XL 1000+ LOC

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant