Skip to content

Commit 02ae0c1

Browse files
authored
Merge pull request #25892 from mdelapenya/docs/t3-code-integration
docs(sandboxes): add T3 Code SSH integration page
2 parents c3e8627 + 155e945 commit 02ae0c1

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)