---
title: "Tools"
description: "The agent's full tool catalog, and which actions require approval"
canonical_url: "https://hoplite.sh/docs/agent/tools"
markdown_url: "https://hoplite.sh/docs/agent/tools.md"
---

# Tools
URL: /docs/agent/tools
LLM index: /llms.txt
Description: The agent's full tool catalog, and which actions require approval
Related: /docs/sandboxes, /docs/github, /docs/integrations/mcp

# Tools

The agent works through a catalog of first-party tools. Every call streams into the thread's activity timeline with a short description of what it's doing; sensitive calls pause for [approval](/docs/threads#approvals) first.

## Files and search

| Tool | What it does |
| --- | --- |
| `repo_info` | Repository layout and metadata |
| `read_file` | Read a file from the sandbox |
| `write_file` | Create or overwrite a file |
| `edit_file` | Targeted string replacement in a file |
| `apply_patch` | Multi-file patch application (the primary editor on GPT models) |
| `list_files` / `find_files` | Browse and locate files |
| `search` | Content search across the repo |
| `read_logs` / `tail_logs` | Read and follow log output |
| `load_skill` | Load a project [skill](/docs/agent#shaping-the-agents-behavior) on demand |
| `web_search` | Search current public-web documentation and research through Hoplite's Exa integration; each result includes its source URL |

`web_search` is a platform capability rather than an MCP server: when staff enables it, it is available to all agent runs using a worker-owned Exa credential. The credential is never copied to project settings, repository files, or sandboxes. Search results are untrusted external content, so the agent treats them as reference material—not instructions.

## Shell and processes

| Tool | What it does |
| --- | --- |
| `shell` | Run a command in the sandbox |
| `process_list` / `kill_process` | Inspect and stop running processes |
| `sandbox_ports` | See which ports are listening |

Remote Git commands for the configured `origin` and `gh` CLI commands receive a fresh, repository-scoped GitHub App installation token for that command. The credential is never stored in the remote URL, Git configuration, or the workspace filesystem, so normal fetch, pull, push, and GitHub CLI workflows keep working across long-running and resumed threads without a manual login. Raw Git pushes remain blocked for repositories with tracked submodules.

## Sandbox lifecycle

| Tool | What it does |
| --- | --- |
| `sandbox_setup` | Run the project's [setup script](/docs/sandboxes/scripts) |
| `preview_start` | Start the run script and return a live [preview URL](/docs/sandboxes/previews) |
| `sandbox_open_preview` | Mint a preview URL for a port that's already listening |
| `sandbox_status` | Health, resources, and disk usage |
| `sandbox_restart` | Restart the sandbox |
| `sandbox_resize_up` / `sandbox_resize_down` | Adjust CPU, memory, and disk within [policy limits](/docs/sandboxes/resources) |

## Browser

Each thread has a persistent browser inside the sandbox — the agent uses it to verify its own work against your running app:

`browser_cli` runs the installed `agent-browser` CLI with the exact arguments after `agent-browser` and optional finite stdin, exposing its complete non-interactive browser automation suite in the thread's persistent browser session and namespace. `browser_open`, `browser_snapshot`, `browser_click`, `browser_fill`, `browser_screenshot`, `browser_console`, `browser_errors`, and `browser_record` (video capture) remain convenience shortcuts for common operations.

## Vision and media

| Tool | What it does |
| --- | --- |
| `view_image` | Load a workspace image into the agent's own context as vision input |
| `display_image` | Show an image to **you** in the chat (stored durably; optionally published at an unguessable URL that expires after 7 days) |
| `display_video` | Show a video in the chat (public mode renders an animated GIF preview that works in GitHub comments) |

## GitHub

`github_get_issue` and `github_list_issues` read the repository's issue queue. `github_get_actions_job_log` reads a bounded workflow job-log tail using a `jobId` returned by `github_list_pull_request_checks`. The GitHub App credential stays in Hoplite's trusted worker and is never exposed to the sandbox or forwarded to GitHub's signed log-download URL.

Pull request operations include `github_create_pull_request`, `github_get_pull_request`, `github_get_pull_request_review_state`, `github_list_pull_request_files`, `github_get_pull_request_file_diff`, `github_list_pull_request_checks`, `github_comment_on_pull_request`, `github_list_pull_requests`, `github_merge_pull_request`, `github_mark_pull_request_ready_for_review`, `github_resolve_review_thread`, plus `thread_link_pull_request` / `thread_list_pull_requests` to tie PRs to the thread. See [GitHub & pull requests](/docs/github).

## Linear

`thread_link_linear_issue` attaches a Linear issue to the current thread. The agent uses it proactively when a prompt includes an issue reference, and inbound Linear agent sessions attach the originating issue automatically. The linked issue appears as the compact Linear pill used alongside pull requests in thread views.

## Self-configuration and feedback

| Tool | What it does |
| --- | --- |
| `project_settings_get` | Show how project scripts and settings resolve (repo file vs. Hoplite overrides) |
| `project_settings_update` | Propose changes to project settings — always requires approval |
| `report_platform_issue` | File a structured platform-issue report to the Hoplite team |

## MCP tools

Projects can attach [MCP servers](/docs/integrations/mcp); their tools join the agent's catalog alongside the first-party set.

## Which tools require approval

These pause for your sign-off before executing:

- `write_file`, `edit_file`, `apply_patch`
- `shell`
- `kill_process`, `sandbox_restart`, `sandbox_resize_down`
- `github_create_pull_request`, `github_comment_on_pull_request`, `github_merge_pull_request`, `github_mark_pull_request_ready_for_review`, `github_resolve_review_thread`
- `project_settings_update`

Everything else — reads, searches, browser actions, status checks — runs without interruption so the agent keeps its momentum.

## Sitemap

See the full [sitemap](/docs/sitemap.md) for all pages.
Well-known sitemap: [/docs/.well-known/sitemap.md](/docs/.well-known/sitemap.md).
