# Tools

Public tools registered in packages/nikcli/src/tool/registry.ts plus tool-gating behavior.

## Tool Registry

Tools are registered in `packages/nikcli/src/tool/registry.ts`. The registry filters them based on model capabilities, client type, and experimental flags.

Gating

Some GPT-family models use `apply_patch` instead of `edit` and `write`. `websearch` and `codesearch` require provider or env setup. `lsp` needs `NIKCLI_EXPERIMENTAL_LSP_TOOL`; `batch` needs `experimental.batch_tool` in config; `plan_enter` / `plan_exit` need experimental plan mode on the CLI client. `question` is available on app, CLI, and desktop clients.

Permission modes override this surface

The active [permission mode](/docs/permissions#modes) (`require_approval` / `approve_for_me` / `full_access` / `custom`) is layered on top of the registry: even when a tool is registered here, the mode decides whether it runs without prompting, prompts the user, or is denied. The TUI command palette exposes a `Permissions` dialog to switch modes.

## Files & Search

Discovery

### read / tree / glob / grep

Read files, inspect directory structure, and search local content quickly.

Editing

### edit / write / apply\_patch

Perform in-place edits, full writes, or structured patch-based updates.

External lookup

### webfetch / websearch / codesearch

Fetch web pages and optionally search the web or remote code indexes when enabled.

## Orchestration

Execution

### bash / monitor

Run shell commands directly or keep them alive in the background with persisted logs.

Subagents

### task / delegation / delegator

Launch delegated agents, inspect or cancel them, and supervise background jobs.

Task tracking

### todowrite / todoread

Track structured task state inside a session and surface progress to the user.

Guidance

### advisor

Request background strategic advice from an advisor agent when available.

Visualization

### opentui

Render tables, charts, timelines, and progress widgets directly in the terminal UI.

[

Self-extension

### plugin

Write a plugin into its own folder, install its dependencies and hot-reload it, so nikcli gains hooks and tools on request. Asks the `plugin` permission by default.

Open reference →

](/docs/guides/plugins#self-extend)

## Context & Memory

Workspace context

### context\_\* / memory\_search

Collect repo context, related files, diagnostics, and prior-session memory.

External repositories

### repo\_clone / repo\_overview

Clone or refresh a remote repository into the managed repos directory, then produce a high-level overview of its structure.

Session goals

### create\_goal / get\_goal / update\_goal

Create a verifiable session goal with an optional token budget, read its current state, and mark it complete or blocked.

Discovery

### search\_tools

Search the live tool registry by keyword to discover which tool IDs are available in the current session.

Code execution

### exec\_code

Execute JavaScript/TypeScript code with all registered tools available as async globals, up to a configurable timeout.

## Integrations & Media

Generative media

### generate\_image / speak

Create images and play text-to-speech output using the configured providers.

Instruction packs

### skill

Load a skill to bring focused instructions into the current session.

Browser automation

### browser\_control

Navigate, snapshot, click, type, and capture the action log of a browser session.

Computer use

### computer

Capture screenshots and send mouse / keyboard input to a desktop session for computer-use workflows.

## Full Tool Index

| Tool ID | Description | Source |
| --- | --- | --- |
| `question` | Ask the user a structured question. | `src/tool/question.ts` |
| `bash` | Run shell commands. | `src/tool/bash.ts` |
| `monitor` | Run long-lived shell commands in the background. | `src/tool/monitor.ts` |
| `read` | Read file contents. | `src/tool/read.ts` |
| `tree` | Show a directory tree. | `src/tool/tree.ts` |
| `glob` | Find files by glob pattern. | `src/tool/glob.ts` |
| `grep` | Search file contents with regex. | `src/tool/grep.ts` |
| `edit` | Apply exact in-place text edits. | `src/tool/edit.ts` |
| `write` | Write or overwrite files. | `src/tool/write.ts` |
| `task` | Launch a delegated subagent. | `src/tool/task.ts` |
| `delegation` | Inspect or control background delegations. | `src/tool/delegation.ts` |
| `delegator` | Monitor and supervise background delegation jobs. | `src/tool/delegator.ts` |
| `code_mode` | Run an orchestration script in a confined interpreter that calls other tools programmatically, keeping intermediate results out of the context window. | `src/tool/code_mode.ts` |
| `context_collect` | Collect workspace context from files. | `src/tool/context_collect.ts` |
| `context_related` | List files related to an entry file. | `src/tool/context_related.ts` |
| `context_diagnostics` | List LSP diagnostics. | `src/tool/context_diagnostics.ts` |
| `memory_search` | Search past session memory. | `src/tool/memory_search.ts` |
| `generate_image` | Generate images from prompts. | `src/tool/generate_image.ts` |
| `webfetch` | Fetch and convert URL content. | `src/tool/webfetch.ts` |
| `todowrite` | Write the session todo list. | `src/tool/todo.ts` |
| `todoread` | Read the current todo list. | `src/tool/todo.ts` |
| `websearch` | Search the web via Exa when enabled. | `src/tool/websearch.ts` |
| `codesearch` | Search code via Exa when enabled. | `src/tool/codesearch.ts` |
| `skill` | Load a skill definition. | `src/tool/skill.ts` |
| `apply_patch` | Patch files with structured diffs. | `src/tool/apply_patch.ts` |
| `speak` | Convert text to speech and play audio. | `src/tool/speak.ts` |
| `opentui` | Render terminal dashboards and rich visualizations. | `src/tool/opentui.ts` |
| `plugin` | Create, update, list, reload and remove nikcli plugins; new plugins load without a restart. | `src/tool/plugin.ts` |
| `artifact` | Publish a local file as a hosted page on nikcli-ai.dev, openable in a browser or the mobile app. | `src/tool/artifact.ts` |
| `lsp` | LSP tool exposed behind experimental flags. | `src/tool/lsp.ts` |
| `batch` | Batch tool calls behind experimental flags. | `src/tool/batch.ts` |
| `plan_enter` | Enter plan mode. | `src/tool/plan.ts` |
| `plan_exit` | Exit plan mode. | `src/tool/plan.ts` |
| `advisor` | Receive background strategic guidance. | `src/tool/advisor.ts` |
| `repo_clone` | Clone or update a Git repository into the managed repos directory. | `src/tool/repo_clone.ts` |
| `repo_overview` | Produce a high-level overview of a managed repository clone. | `src/tool/repo_overview.ts` |
| `search_tools` | Search the tool registry by keyword to discover available tool IDs. | `src/tool/search_tools.ts` |
| `exec_code` | Execute JavaScript/TypeScript code with tool globals available as async functions. | `src/tool/exec_code.ts` |
| `create_goal` | Create a session goal with an objective and optional token budget. | `src/tool/goal.ts` |
| `get_goal` | Read the current goal state for this session. | `src/tool/goal.ts` |
| `update_goal` | Mark the session goal as complete or blocked. | `src/tool/goal.ts` |
| `invalid` | Rejected invalid tool-call shape. | `src/tool/invalid.ts` |
| `computer` | Computer-use tool: capture screenshots, send mouse and keyboard input to a desktop session. | `src/tool/computer.ts` |
| `browser_control` | Drive a browser: navigate, snapshot, click, type, and capture the action log. | `src/tool/browser-control.ts` |

## Related

-   [Agents Which agents can call which tools.](/docs/agents)
-   [Permissions Tool execution approval rules.](/docs/permissions)
-   [Plugins & Skills Custom tools from plugins and skills.](/docs/plugins)

---

Source: https://nikcli-ai.dev/docs/tools
