Skip to content

Commit 155e945

Browse files
committed
docs(sandboxes): add T3 Code SSH integration page
T3 Code connects to sandboxes over the same SSH integration as VS Code and Cursor, with no dedicated Docker Sandboxes support on its side. Adds a Connect page plus a disk-space troubleshooting note for the "server never became ready" timeout. Signed-off-by: Manuel de la Peña <manuel.delapena@docker.com>
1 parent c3e8627 commit 155e945

2 files changed

Lines changed: 92 additions & 0 deletions

File tree

content/manuals/ai/sandboxes/integrations/_index.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,7 @@ For example, if you mount `/Users/bob/src/my-project`, select
7777
- [Cursor](cursor.md)
7878
- [Claude Desktop](claude-desktop.md)
7979
- [ChatGPT](chatgpt.md)
80+
- [T3 Code](t3-code.md)
8081

8182
## How SSH connections work
8283

Lines changed: 91 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,91 @@
1+
---
2+
title: Connect T3 Code to a sandbox
3+
linkTitle: T3 Code
4+
weight: 50
5+
description: Run T3 Code against a Docker Sandbox over SSH.
6+
keywords: docker sandboxes, t3 code, remote ssh, remote development, sbx
7+
---
8+
9+
{{< summary-bar feature_name="Docker Sandboxes SSH" >}}
10+
11+
T3 Code's SSH integration lets the desktop app drive coding agents inside a
12+
sandbox. T3 Code has no dedicated Docker Sandboxes integration — it treats the
13+
sandbox as an ordinary SSH host, connects to it, and starts a T3 server inside
14+
that tunnels back to the app.
15+
16+
## Prerequisites
17+
18+
- SSH access set up. See [Editor and app integrations](_index.md#enable-ssh-access).
19+
- T3 Code installed.
20+
21+
## Connect
22+
23+
Confirm that you can connect to the sandbox from a terminal:
24+
25+
```console
26+
$ ssh demo.sbx
27+
```
28+
29+
In T3 Code, add an SSH environment and enter the sandbox hostname, such as
30+
`demo.sbx`, as the host. The first connection installs the T3 server inside
31+
the sandbox, so it can take a moment. Later connections are faster.
32+
33+
Then add a new project, select the SSH environment from the list, and
34+
[choose the mounted workspace](_index.md#select-the-workspace-folder) as the
35+
project directory inside the sandbox.
36+
37+
## Troubleshoot a server that never becomes ready
38+
39+
T3 Code can fail to connect with an error like the following, wrapped here
40+
for readability. It concatenates the connection failure with npm's install
41+
output from inside the sandbox into a single error dialog:
42+
43+
```text
44+
Could not prepare the SSH environment: ... SshCommandError: Connecting to
45+
sandbox "sandboxes"… Remote T3 server did not become ready on
46+
127.0.0.1:3773. npm WARN EBADENGINE Unsupported engine { package:
47+
'ini@7.0.0', required: { node: '^22.22.2 || ^24.15.0 || >=26.0.0' },
48+
current: { node: 'v22.22.1', npm: '9.2.0' } }
49+
```
50+
51+
The `npm WARN EBADENGINE` lines warn about the transitive `ini` dependency.
52+
They aren't the cause of the failure — npm doesn't enforce engine
53+
requirements by default, so this warning alone doesn't stop the install.
54+
Check free disk space in the sandbox. A full disk can fail the T3 server
55+
install partway through, and T3 Code reports this the same way as a
56+
connection timeout:
57+
58+
```console
59+
$ sbx exec <sandbox> -- df -h /
60+
```
61+
62+
Free up space and reconnect if the sandbox is close to full.
63+
64+
## Troubleshoot `turn/setPermissionMode failed`
65+
66+
If your organization manages Claude Code with a policy file, a local T3 Code
67+
thread can fail to start with `turn/setPermissionMode failed`. T3 Code's
68+
default runtime mode is Full access, which maps to the Claude Agent SDK's
69+
`bypassPermissions` mode. A managed policy that disables that mode rejects
70+
the request.
71+
72+
On macOS, check whether this applies to you:
73+
74+
```console
75+
$ cat "/Library/Application Support/ClaudeCode/managed-settings.json"
76+
```
77+
78+
If `permissions.disableBypassPermissionsMode` is set to `disable`, switch T3
79+
Code to a different runtime mode, such as Supervised, Auto-accept edits, or
80+
Auto, then start a new thread. The permission mode is captured once when a
81+
thread starts, so switching modes in an already-failing thread doesn't
82+
recover it.
83+
84+
This restriction applies to the host running Claude Code, not to a sandbox.
85+
A thread connected to a sandbox isn't subject to the host's managed policy,
86+
so Full access works normally there.
87+
88+
## Related
89+
90+
- [Editor and app integrations](_index.md) — how SSH access works and how to
91+
set it up

0 commit comments

Comments
 (0)