Built-in Tools
AdaL ships with a full set of built-in tools — file operations, shell commands, search, web access, media generation, and more. These tools are available to the agent by default. This page covers what they are, how to control which ones the agent can see and use, and how to disable tools entirely.
Tool Groups
Every built-in tool belongs to a tool group. Groups are the shorthand used by --enabled-default-tools and --disabled-default-tools (CLI), and enabled_default_tools / disabled_default_tools (SDK).
| Group | Tools | Description |
|---|---|---|
| Bash | bash, get_bash_output | Execute shell commands and retrieve output from background processes |
| Edit | create_file, replace_by_string, rewrite_file, delete_lines | Create and modify files |
| Read | read_file, read_image | Read text files and images |
| Search | glob, grep | Find files by name pattern and search file contents |
| Web | web_search, fetch_url | Web search and URL content fetching |
| Image | generate_image, analyze_image | AI image generation, editing, and analysis. See Image & Video Capabilities |
| Video | generate_video, check_video_status, read_video, check_read_video_status | AI video generation, analysis, and status polling. See Image & Video Capabilities |
| Consult | consult | Query other AI models in parallel for multi-model reasoning |
You can reference tools by group name (e.g., "Bash") or by exact tool name (e.g., "bash", "web_search").
Controlling Tool Visibility
There are three complementary mechanisms for controlling which tools the agent can use. They can be combined.
--enabled-default-tools (CLI) / enabled_default_tools (SDK)
Positive set — specify ONLY which tools the agent should have. Everything else is disabled.
CLI:
# Agent can ONLY use Read, Search, and Bash
adal --enabled-default-tools "Read,Search,Bash"
# Only allow file reading and web search
adal --enabled-default-tools "Read,Web"
SDK:
from adal_agent_sdk import AdalAgentOptions
# Agent can only read, search, and use bash
options = AdalAgentOptions(
workspace=".",
enabled_default_tools=["Read", "Search", "Bash"],
)
Key behaviors:
- Cannot be combined with
--disabled-default-tools— setting both is an error. - Only affects built-in core tools. Custom tools from
.adal/tools.pyare not affected. - The agent never knows disabled tools exist — they don't appear in its tool list or system prompt.
--disabled-default-tools (CLI) / disabled_default_tools (SDK)
Negative set — disable specific tools from the defaults. Everything else remains available.
CLI:
# Strip web access and media generation
adal --disabled-default-tools "Web,Image,Video"
# Disable specific tools by exact name
adal --disabled-default-tools "bash,web_search"
# Mix groups and exact tool names
adal --disabled-default-tools "Web,bash"
SDK:
from adal_agent_sdk import AdalAgentOptions
# Disable entire groups
options = AdalAgentOptions(
workspace=".",
disabled_default_tools=["Bash", "Image", "Video"],
)
# Disable by exact tool name
options = AdalAgentOptions(
workspace=".",
disabled_default_tools=["bash", "web_search"],
)
Key behaviors:
- Applies at startup. When resuming a session (
--resume), pass the flag again — it is not persisted. - Only affects built-in core tools. Custom tools from
.adal/tools.pyare not affected. - The agent never knows disabled tools exist — they don't appear in its tool list or system prompt.
Use --enabled-default-tools or --disabled-default-tools for safety (the agent literally cannot do dangerous things).
Use --yolo for speed when you trust the prompt. For fine-grained per-tool approval control, use the can_use_tool callback (see Permissions).
Permission Modes
Beyond per-tool flags, the permission_mode controls the global approval behavior:
| Mode | Behavior |
|---|---|
default | All tool calls require approval (via can_use_tool callback or interactive prompt) |
acceptEdits | Read-only tools auto-approved; write tools still require approval |
yolo | All tools auto-approved — no prompts at all |
# Full automation, no prompts
adal --yolo -q "Refactor the auth module and run tests"
options = AdalAgentOptions(
workspace=".",
permission_mode="yolo",
)
See the Permissions guide for the can_use_tool callback API.
Combining Visibility and Permission Modes
# Agent can only use Read, Search, Bash — all auto-approved
adal --enabled-default-tools "Read,Search,Bash" --yolo
# Agent cannot touch web/media — everything else requires approval
adal --disabled-default-tools "Web,Image,Video"
options = AdalAgentOptions(
workspace=".",
disabled_default_tools=["Web", "Image", "Video"],
permission_mode="yolo",
)
Common Recipes
Read-only research agent
# Only enable Read, Search, Web — no editing, no shell
adal --enabled-default-tools "Read,Search,Web" --yolo
Focused coding agent (no web, no media)
adal --disabled-default-tools "Web,Image,Video" --yolo
Full-power agent with audit trail
Use permission_mode="default" with the can_use_tool callback for programmatic approval decisions. See Permissions.
Related
- Custom Tools — add your own Python tools via
.adal/tools.py - Permissions — the
can_use_toolcallback for programmatic approval - SDK API Reference —
AdalAgentOptionsfields