# Terminal Access

You can open an interactive terminal connected directly to the task's container. This lets you run commands, explore the filesystem, resume agents, and debug issues in real-time.

## Web-Based Terminal

Click the **Terminal** button in the task toolbar to open a terminal in a new browser tab. You're immediately connected to the running container and can execute commands.

The web-based terminal supports:
- Full shell capabilities (bash)
- Running commands and tools installed in the container
- Interactive prompts and text input
- Colors and text formatting
- Standard input/output redirection

This is the quickest way to access the container—no local setup required.

## Attaching from Your Own Terminal

If you prefer using your local terminal application, click the dropdown arrow next to the Terminal button and select **Copy Attach Command**. This copies a `coder` CLI command to your clipboard.

Paste and run this command in your local terminal to attach directly to the container. This gives you:
- Your preferred terminal emulator and configuration
- Better keyboard shortcut support
- Integration with local tools and shell customizations
- Easier copy/paste workflows

The attach command connects to the same container as the web terminal—both access the identical environment.

**Note:** Terminal access is only available while the container is running. If the container stops, restart it to use the terminal again.

## Working in the Container

The container environment has a specific structure:

- **`/workspace`** - The main working directory where repositories are cloned. This is where you'll spend most of your time. All repository code, configurations, and edits live here.
- **`/task-output`** - Output directory containing task metadata, logs, and state information. This is managed by the system.

When you open a terminal, it starts in the `/workspace` directory by default. All code changes you make here (whether through file editing or terminal commands) are reflected in the Changed Files section after syncing.

### Environment Setup

The container includes:
- Pre-installed AI agent runtimes (Claude Code, Codex, Gemini, etc.)
- Git configured for the workspace
- Development tools (Node.js, Python, etc.)
- SSH and other utilities for advanced workflows

## Common Operations

### Run a Shell Command

```bash
# Any bash command works as normal
ls -la
grep -r "search-term" .
npm install
python script.py
```

### Resume an AI Agent

The terminal dropdown menu provides quick shortcuts to resume agents:

```bash
# Resume Claude Code from the last session
claude resume

# Resume Codex from the last session
codex resume

# Start a new Claude Code session
claude exec
```

These commands automatically set up the necessary environment and load previous session state if available.

### Apply a Patch Locally

If you want to apply the current task's patch to a local repository on your machine, use the CLI (not in the terminal):

```bash
# From your local machine
coder apply <task-id> <filename>
```

This is useful if you prefer to review and integrate changes in your local development environment.

### Explore the Workspace

```bash
# See what repositories are available
ls /workspace

# View repository status
cd /workspace/<repo-name>
git status

# See recent commits
git log --oneline -10
```

### Interact with the Agent

When an agent is running, you can:
- Inspect what it's doing with logs
- Check intermediate results in `/task-output`
- Modify files and re-run commands to guide the agent

All changes made in the terminal contribute to the final diff and appear in the Changed Files section.
