How the Tool Handshake Works
Tools provide a flexible, powerful way for models to interface with the external world. They are provided to the model as a JSON object with a name and an arguments schema. For example, aread_file
tool with a filepath
argument will give the model the ability to request the contents of a specific file.
The following handshake describes how Agent mode uses tools:
- In Agent mode, available tools are sent along with
user
chat requests - The model can choose to include a tool call in its response
- The user gives permission. This step is skipped if the policy for that tool is set to
Automatic
- Continue calls the tool using built-in functionality or the MCP server that offers that particular tool
- Continue sends the result back to the model
- The model responds, potentially with another tool call and step 2 begins again
Tool availability varies by mode: - Chat mode: No tools included - Plan
mode: Only read-only tools included - Agent mode: All tools included
What Built-in Tools Are Available
Continue includes several built-in tools which provide the model access to IDE functionality.What Tools Are Available in Plan Mode (Read-Only)
In Plan mode, only these read-only tools are available:- Read file (
read_file
) - Supports paths outside workspace with permission - Read currently open file (
read_currently_open_file
) - List directory (
ls
) - Supports paths outside workspace with permission - Glob search (
glob_search
) - Grep search (
grep_search
) - Fetch URL content (
fetch_url_content
) - Search web (
search_web
) - View diff (
view_diff
) - View repo map (
view_repo_map
) - View subdirectory (
view_subdirectory
) - Supports paths outside workspace with permission - Codebase tool (
codebase_tool
)
Tools like
read_file
, ls
, and view_subdirectory
can access files outside your workspace with explicit permission. Learn more about File Access Outside Workspace.What Tools Are Available in Agent Mode (All Tools)
In Agent mode, all tools are available including the read-only tools above plus:- Create new file (
create_new_file
): Create a new file within the project - Edit file (
edit_file
): Make changes to existing files - Run terminal command (
run_terminal_command
): Run commands from the workspace root - Create Rule Block (
create_rule_block
): Create a new rule block in.continue/rules
- All other write/execute tools for modifying the codebase