Skip to main content

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).

GroupToolsDescription
Bashbash, get_bash_outputExecute shell commands and retrieve output from background processes
Editcreate_file, replace_by_string, rewrite_file, delete_linesCreate and modify files
Readread_file, read_imageRead text files and images
Searchglob, grepFind files by name pattern and search file contents
Webweb_search, fetch_urlWeb search and URL content fetching
Imagegenerate_image, analyze_imageAI image generation, editing, and analysis. See Image & Video Capabilities
Videogenerate_video, check_video_status, read_video, check_read_video_statusAI video generation, analysis, and status polling. See Image & Video Capabilities
ConsultconsultQuery 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.py are 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.py are not affected.
  • The agent never knows disabled tools exist — they don't appear in its tool list or system prompt.
tip

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:

ModeBehavior
defaultAll tool calls require approval (via can_use_tool callback or interactive prompt)
acceptEditsRead-only tools auto-approved; write tools still require approval
yoloAll 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.