Skip to content

Tools Reference

Complete reference for CodeBuddy Code's available tools, including permission requirements.

CodeBuddy Code includes a set of built-in tools to help understand and modify your codebase. The tool names in the table below are the identifiers used in permission rules, sub-agent tool lists, and Hook matchers.

ToolDescriptionRequires Permission
AgentSpawns a sub-agent with an independent context window to handle tasksNo
AskUserQuestionAsks the user a multiple-choice question to gather requirements or clarify ambiguitiesYes
BashExecutes shell commands in your environment. See Bash Tool BehaviorYes
CronCreateSchedules recurring or one-time tasks within the current session (expires on exit). See Scheduled TasksNo
CronDeleteCancels a scheduled task by IDNo
CronListLists all scheduled tasks in the current sessionNo
DeferExecuteToolExecutes a deferred tool discovered via ToolSearchNo
EditPerforms precise string replacement edits on filesYes
EnterPlanModeSwitches to plan mode for designing implementation approaches before codingNo
EnterWorktreeCreates an isolated git worktree and switches into itYes
ExitPlanModeSubmits a plan for user approval and exits plan modeYes
GlobFinds files using glob patternsNo
GrepSearches file contents using regex patternsNo
ImageEditEdits or modifies existing images based on text instructionsYes
ImageGenGenerates images from text descriptionsYes
LeaveWorktreeExits the worktree session and returns to the original directoryYes
LSPProvides code intelligence via Language Server. Automatically reports type errors and warnings after file edits. Also supports navigation operations such as go-to-definition, find references, get type info, list symbols, find implementations, and trace call hierarchies. Requires a Code Intelligence Plugin and its language server binaryNo
MultiEditPerforms multiple edits on the same file in a single atomic operationYes
NotebookEditModifies Jupyter notebook cell contentsYes
PowerShellExecutes PowerShell commands on Windows. Only available on Windows, see PowerShell Tool BehaviorYes
ReadReads file contents, supporting images, PDFs, and Jupyter notebooksNo
SendMessageSends messages to teammates in an Agent TeamNo
SkillExecutes a Skill in the main conversationNo
SlashCommandExecutes a custom slash commandYes
StructuredOutputReturns structured output conforming to a JSON SchemaNo
TaskCreateCreates a new task in the task listNo
TaskGetRetrieves full details of a specific taskNo
TaskListLists all tasks with their current statusNo
TaskOutputRetrieves output from a background task or sub-agentNo
TaskStopStops a running background task by IDNo
TaskUpdateUpdates task status, dependencies, details, or deletes a taskNo
TeamCreateCreates an Agent Team for coordinating multiple agentsNo
TeamDeleteDeletes an Agent Team and its task directoryNo
ToolSearchSearches and loads deferred tools, supporting both built-in tools and MCP toolsNo
WebFetchFetches content from a specified URL and performs AI analysisYes
WebSearchPerforms a web searchYes
WriteCreates or overwrites filesYes

Permission rules can be configured via the /permissions command or in permission settings. See also Tool-Specific Permission Rules.

Tool Aliases

Some tools have aliases that can be used interchangeably in permission rules:

ToolAlias
TaskOutputBashOutput
TaskStopKillShell
PowerShellpwsh, ps

Bash Tool Behavior

The Bash tool executes each command in a separate process with the following persistence characteristics:

  • Working directory persists across commands. Set CODEBUDDY_BASH_MAINTAIN_PROJECT_WORKING_DIR=1 to reset to the project directory after each command.
  • Environment variables do not persist. An export in one command will not take effect in the next command.

Activate your virtualenv or conda environment before launching CodeBuddy Code. To persist environment variables across Bash commands, set CODEBUDDY_ENV_FILE to point to a shell script before startup, or use a SessionStart Hook to populate it dynamically.

Sandbox Mode

The Bash tool supports sandbox isolation, which can restrict filesystem and network access. When sandbox is enabled, commands execute in a restricted environment to prevent unauthorized system access.

The dangerouslyDisableSandbox parameter allows bypassing the sandbox on a per-command basis (requires user approval).

Background Execution

The run_in_background parameter allows running commands in the background, using the TaskOutput tool to read the output. This is suitable for long-running builds, tests, and similar scenarios.

PowerShell Tool Behavior

The PowerShell tool is only available on Windows and provides native PowerShell command execution.

Relationship with Bash Tool

  • With Git Bash: Both Bash and PowerShell tools are available; the model chooses the appropriate tool based on the scenario
  • Without Git Bash: The Bash tool is automatically disabled, and the PowerShell tool becomes the only shell tool
  • The PowerShell tool is not available on macOS/Linux

Version Adaptation

The PowerShell tool automatically detects the PowerShell version, preferring PowerShell 7+ (pwsh) and falling back to Windows PowerShell 5.1. Syntax guidance in prompts adjusts automatically based on version differences (e.g., the && operator is only supported in 7+).

Security Checks

The PowerShell tool includes a built-in security checker covering dangerous patterns such as code injection, download-and-execute, privilege escalation, and system destruction. Dangerous commands (e.g., Invoke-Expression, Add-Type) are blocked, and system-modifying commands require user confirmation.

Environment Variables

Environment VariableDescription
CODEBUDDY_POWERSHELL_PATHExplicitly specify the PowerShell path (takes priority over auto-detection)
CODEBUDDY_USE_POWERSHELL_TOOLSet to 0 to disable the PowerShell tool

Deferred Tool Loading

Some tools (such as those provided via MCP servers) use deferred loading. These tools do not appear in the initial tool list and must be discovered and activated via ToolSearch. Once activated, tools remain available for the rest of the session.

Tools can be configured as deferred via product configuration:

json
{
  "tools": {
    "ToolName": {
      "deferLoading": true
    }
  }
}

See Also