tools.md

  1---
  2title: AI Agent Tools - Zed
  3description: Built-in tools for Zed's AI agent including file editing, code search, terminal commands, web search, and diagnostics.
  4---
  5
  6# Tools
  7
  8Zed's built-in agent has access to these tools for reading, searching, and editing your codebase. These tools are used in the [Agent Panel](./agent-panel.md) during conversations with AI agents.
  9
 10You can configure permissions for tool actions, including situations where they are automatically approved, automatically denied, or require your confirmation on a case-by-case basis. See [Tool Permissions](./tool-permissions.md) for the list of permission-gated tools and details.
 11
 12To add custom tools beyond these built-in ones, see [MCP servers](./mcp.md).
 13
 14## Read & Search Tools
 15
 16### `diagnostics`
 17
 18Gets errors and warnings for either a specific file or the entire project, useful after making edits to determine if further changes are needed.
 19When a path is provided, shows all diagnostics for that specific file.
 20When no path is provided, shows a summary of error and warning counts for all files in the project.
 21
 22**Example:** After editing `src/parser.rs`, call `diagnostics` with that path to check for type errors immediately. After a larger refactor touching many files, call it without a path to see a project-wide count of errors before deciding what to fix next.
 23
 24### `fetch`
 25
 26Fetches a URL and returns the content as Markdown. Useful for providing docs as context.
 27
 28**Example:** Fetching a library's changelog page to check whether a breaking API change was introduced in a recent version before writing integration code.
 29
 30### `find_path`
 31
 32Quickly finds files by matching glob patterns (like "\*_/_.js"), returning matching file paths alphabetically.
 33
 34### `grep`
 35
 36Searches file contents across the project using regular expressions, preferred for finding symbols in code without knowing exact file paths.
 37
 38**Example:** To find every call site of a function before renaming it, search for `parse_config\(` — the regex matches the function name followed by an opening parenthesis, filtering out comments or variable names that happen to contain the string.
 39
 40### `list_directory`
 41
 42Lists files and directories in a given path, providing an overview of filesystem contents.
 43
 44### `now`
 45
 46Returns the current date and time.
 47
 48### `open`
 49
 50Opens a file or URL with the default application associated with it on the user's operating system.
 51
 52### `read_file`
 53
 54Reads the content of a specified file in the project, allowing access to file contents.
 55
 56### `thinking`
 57
 58Allows the Agent to work through problems, brainstorm ideas, or plan without executing actions, useful for complex problem-solving.
 59
 60### `web_search`
 61
 62Searches the web for information, providing results with snippets and links from relevant web pages, useful for accessing real-time information.
 63
 64**Example:** Looking up whether a known bug in a dependency has been patched in a recent release, or finding the current API signature for a third-party library when the local docs are out of date.
 65
 66## Edit Tools
 67
 68### `copy_path`
 69
 70Copies a file or directory recursively in the project, more efficient than manually reading and writing files when duplicating content.
 71
 72### `create_directory`
 73
 74Creates a new directory at the specified path within the project, creating all necessary parent directories (similar to `mkdir -p`).
 75
 76### `delete_path`
 77
 78Deletes a file or directory (including contents recursively) at the specified path and confirms the deletion.
 79
 80### `edit_file`
 81
 82Edits files by replacing specific text with new content.
 83
 84**Example:** Updating a function signature — the agent identifies the exact lines to replace and provides the updated version, leaving the surrounding code untouched. For widespread renames, it pairs this with `grep` to find every occurrence first.
 85
 86### `move_path`
 87
 88Moves or renames a file or directory in the project, performing a rename if only the filename differs.
 89
 90### `restore_file_from_disk`
 91
 92Discards unsaved changes in open buffers by reloading file contents from disk. Useful for resetting files to their on-disk state before retrying an edit.
 93
 94### `save_file`
 95
 96Saves files that have unsaved changes. Used when files need to be saved before further edits can be made.
 97
 98### `terminal`
 99
100Executes shell commands and returns the combined output, creating a new shell process for each invocation.
101
102**Example:** After editing a Rust file, run `cargo test --package my_crate 2>&1 | tail -30` to confirm the changes don't break existing tests. Or run `git diff --stat` to review which files have been modified before wrapping up a task.
103
104## Other Tools
105
106### `spawn_agent`
107
108Spawns a subagent with its own context window to perform a delegated task. Useful for running parallel investigations, completing self-contained tasks, or performing research where only the outcome matters. Each subagent has access to the same tools as the parent agent.
109
110**Example:** While refactoring the authentication module, spawn a subagent to investigate how session tokens are validated elsewhere in the codebase. The parent agent continues its work and reviews the subagent's findings when it completes — keeping both context windows focused on a single task.