---
title: Interactive browser terminals in Sandboxes
description: The Sandbox SDK now supports proxying WebSocket connections to container PTY sessions, enabling browser-based terminal UIs with output buffering, reconnection, and multiple isolated terminals per sandbox.
image: https://developers.cloudflare.com/changelog-preview.png
---

[Skip to content](#%5Ftop) 

# Changelog

New updates and improvements at Cloudflare.

[ Subscribe to RSS ](https://developers.cloudflare.com/changelog/rss/index.xml) [ View RSS feeds ](https://developers.cloudflare.com/fundamentals/new-features/available-rss-feeds/) 

![hero image](https://developers.cloudflare.com/_astro/hero.CVYJHPAd_26AMqX.svg) 

[ ← Back to all posts ](https://developers.cloudflare.com/changelog/) 

## Interactive browser terminals in Sandboxes

Feb 09, 2026 

[ Agents ](https://developers.cloudflare.com/agents/) 

The [Sandbox SDK ↗](https://github.com/cloudflare/sandbox-sdk) now supports PTY (pseudo-terminal) passthrough, enabling browser-based terminal UIs to connect to sandbox shells via WebSocket.

#### `sandbox.terminal(request)`

The new `terminal()` method proxies a WebSocket upgrade to the container's PTY endpoint, with output buffering for replay on reconnect.

* [  JavaScript ](#tab-panel-1492)
* [  TypeScript ](#tab-panel-1493)

JavaScript

```

// Worker: proxy WebSocket to container terminal

return sandbox.terminal(request, { cols: 80, rows: 24 });


```

TypeScript

```

// Worker: proxy WebSocket to container terminal

return sandbox.terminal(request, { cols: 80, rows: 24 });


```

#### Multiple terminals per sandbox

Each session can have its own terminal with an isolated working directory and environment, so users can run separate shells side-by-side in the same container.

* [  JavaScript ](#tab-panel-1494)
* [  TypeScript ](#tab-panel-1495)

JavaScript

```

// Multiple isolated terminals in the same sandbox

const dev = await sandbox.getSession("dev");

return dev.terminal(request);


```

TypeScript

```

// Multiple isolated terminals in the same sandbox

const dev = await sandbox.getSession("dev");

return dev.terminal(request);


```

#### xterm.js addon

The new `@cloudflare/sandbox/xterm` export provides a `SandboxAddon` for [xterm.js ↗](https://xtermjs.org/) with automatic reconnection (exponential backoff + jitter), buffered output replay, and resize forwarding.

* [  JavaScript ](#tab-panel-1496)
* [  TypeScript ](#tab-panel-1497)

JavaScript

```

import { SandboxAddon } from "@cloudflare/sandbox/xterm";


const addon = new SandboxAddon({

  getWebSocketUrl: ({ sandboxId, origin }) =>

    `${origin}/ws/terminal?id=${sandboxId}`,

  onStateChange: (state, error) => updateUI(state),

});

terminal.loadAddon(addon);

addon.connect({ sandboxId: "my-sandbox" });


```

TypeScript

```

import { SandboxAddon } from "@cloudflare/sandbox/xterm";


const addon = new SandboxAddon({

  getWebSocketUrl: ({ sandboxId, origin }) =>

    `${origin}/ws/terminal?id=${sandboxId}`,

  onStateChange: (state, error) => updateUI(state),

});

terminal.loadAddon(addon);

addon.connect({ sandboxId: "my-sandbox" });


```

#### Upgrade

To update to the latest version:

Terminal window

```

npm i @cloudflare/sandbox@latest


```