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
Capabilityload_capabilityLoads 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.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:

ModeRuns without askingAsks first
defaultReads, 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)
acceptEditsThe above, plus file creates and editsThe remaining shell commands
yoloEverythingNothing

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.