# LocalShellBackend

> **Class** in `deepagents`

📖 [View in docs](https://reference.langchain.com/javascript/deepagents/backends/LocalShellBackend)

Filesystem backend with unrestricted local shell command execution.

This backend extends FilesystemBackend to add shell command execution
capabilities. Commands are executed directly on the host system without any
sandboxing, process isolation, or security restrictions.

**Security Warning:**
This backend grants agents BOTH direct filesystem access AND unrestricted
shell execution on your local machine. Use with extreme caution and only in
appropriate environments.

**Appropriate use cases:**
- Local development CLIs (coding assistants, development tools)
- Personal development environments where you trust the agent's code
- CI/CD pipelines with proper secret management

**Inappropriate use cases:**
- Production environments (e.g., web servers, APIs, multi-tenant systems)
- Processing untrusted user input or executing untrusted code

Use StateBackend, StoreBackend, or extend BaseSandbox for production.

## Signature

```javascript
class LocalShellBackend
```

## Extends

- `FilesystemBackend`

## Implements

- `SandboxBackendProtocolV2`

## Constructors

- [`constructor()`](https://reference.langchain.com/javascript/deepagents/backends/LocalShellBackend/constructor)

## Properties

- `cwd`
- `virtualMode`
- `id`
- `isInitialized`
- `isRunning`

## Methods

- [`close()`](https://reference.langchain.com/javascript/deepagents/backends/LocalShellBackend/close)
- [`delete()`](https://reference.langchain.com/javascript/deepagents/backends/LocalShellBackend/delete)
- [`downloadFiles()`](https://reference.langchain.com/javascript/deepagents/backends/LocalShellBackend/downloadFiles)
- [`edit()`](https://reference.langchain.com/javascript/deepagents/backends/LocalShellBackend/edit)
- [`execute()`](https://reference.langchain.com/javascript/deepagents/backends/LocalShellBackend/execute)
- [`glob()`](https://reference.langchain.com/javascript/deepagents/backends/LocalShellBackend/glob)
- [`grep()`](https://reference.langchain.com/javascript/deepagents/backends/LocalShellBackend/grep)
- [`initialize()`](https://reference.langchain.com/javascript/deepagents/backends/LocalShellBackend/initialize)
- [`ls()`](https://reference.langchain.com/javascript/deepagents/backends/LocalShellBackend/ls)
- [`read()`](https://reference.langchain.com/javascript/deepagents/backends/LocalShellBackend/read)
- [`readRaw()`](https://reference.langchain.com/javascript/deepagents/backends/LocalShellBackend/readRaw)
- [`uploadFiles()`](https://reference.langchain.com/javascript/deepagents/backends/LocalShellBackend/uploadFiles)
- [`write()`](https://reference.langchain.com/javascript/deepagents/backends/LocalShellBackend/write)
- [`create()`](https://reference.langchain.com/javascript/deepagents/backends/LocalShellBackend/create)

## Examples

```typescript
import { LocalShellBackend } from "@langchain/deepagents";

// Create backend with explicit environment
const backend = new LocalShellBackend({
  rootDir: "/home/user/project",
  virtualMode: true,
  env: { PATH: "/usr/bin:/bin" },
});

// Execute shell commands (runs directly on host)
const result = await backend.execute("ls -la");
console.log(result.output);
console.log(result.exitCode);

// Use filesystem operations (inherited from FilesystemBackend)
const content = await backend.read("/README.md");
await backend.write("/output.txt", "Hello world");

// Inherit all environment variables
const backend2 = new LocalShellBackend({
  rootDir: "/home/user/project",
  virtualMode: true,
  inheritEnv: true,
});
```

---

[View source on GitHub](https://github.com/langchain-ai/deepagentsjs/blob/60e32118b0ba24ea7ef636476a9a96add9d1a99b/libs/deepagents/src/backends/local-shell.ts#L139)