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 |
| Capability | load_capability | Loads a capability on demand. Disabling this group stops every capability — including browser-use and deep-research — from loading for the session. See Capabilities |
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 | Runs without asking | Asks first |
|---|---|---|
default | Reads, search, web, browser, media, MCP and custom tools; read-only shell commands (ls, git status, grep, ...) and project commands (test, build and lint runners, git add/commit/switch, mkdir/cp/mv inside the workspace) | File edits; any other shell command (rm, git push, curl, sudo, redirects, paths outside the workspace) |
acceptEdits | The above, plus file creates and edits | The remaining shell commands |
yolo | Everything | Nothing |
When AdaL asks about a shell command, "allow always" grants that command prefix (for example git push) for the rest of the session, not the whole shell.
# 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