For the complete documentation index, see llms.txt. This page is also available as Markdown.

Built-In Tools

Tabnine CLI provides built-in tools that the AI uses automatically to fulfill your requests. You don't call tools directly — the AI selects the right tool based on what you ask.

> What files are in the src directory?

The AI automatically uses the list_directory tool.

Available Tools

File Operations

  • read_file — Read file contents. Supports text, images (PNG, JPG, GIF, WEBP, SVG, BMP), audio (MP3, WAV, AIFF, AAC, OGG, FLAC), and PDF files. For text files, can read specific line ranges.

  • read_many_files — Read content from multiple files specified by glob patterns. Handles the same file types as read_file. Useful for bulk reads across a directory.

  • write_file — Create new files or overwrite existing ones. Creates parent directories if needed.

  • replace — Make precise text replacements in existing files. Requires significant surrounding context to ensure correct edits. Can replace a single occurrence (default) or all occurrences of a match.

  • list_directory — List files and subdirectories in a directory. Can filter using glob patterns and respects .gitignore and .tabnineignore.

  • glob — Find files matching glob patterns (e.g., **/*.ts, src/*.js). Returns absolute paths sorted by modification time (newest first).

  • grep_search — Search for regular expression patterns within file contents. Powered by ripgrep when available. Supports context lines, case sensitivity, literal string mode, file filtering, and match limits.

    Note: Older documentation may refer to this tool as search_file_content. That name is a legacy alias — the actual tool name is grep_search.

Shell

  • run_shell_command — Execute shell commands in your terminal. Supports background execution, working directory selection, and a brief description for the user.

Web Tools (Disabled by Default)

  • web_fetch — Fetch and process content from URLs (including localhost). Can handle up to 20 URLs in a single call. See Web Fetch for details.

These tools are disabled by default in Tabnine CLI. To enable them, add to your settings.json:

  • enableWebFetchTool — enables web_fetch (URL content fetching).

Each setting controls its respective tool independently.

Memory & Task Management

  • save_memory — Save concise global user preferences and facts that persist across all sessions and workspaces. Not for workspace-specific context.

  • write_todos — Manage subtask lists for complex requests. Tracks progress with statuses: pending, in_progress, completed, cancelled, blocked.

Planning

  • enter_plan_mode — Switch to Plan Mode for safe research and planning of complex changes. In Plan Mode, only read-only tools are available.

  • exit_plan_mode — Finalize the plan and transition to implementation. Presents the plan for user approval before any edits begin.

Plan Mode is controlled by the experimental.plan setting (enabled by default).

User Interaction

  • ask_user — Ask the user one or more questions to gather preferences, clarify requirements, or make decisions. Supports multiple-choice, free-text, and yes/no question types.

Skills

  • activate_skill — Load a specialized agent skill by name. Skills provide expert guidance for specific tasks (e.g., coding guidelines, skill creation). Available skills vary by installation.

Internal Documentation

  • get_internal_docs — Access Tabnine CLI's built-in documentation files. Without arguments, lists all available docs. With a path argument, returns the content of that doc file.

Task Tracker (Experimental)

These tools are gated behind experimental.taskTracker (disabled by default).

  • tracker_create_task — Create a new task (epic, task, or bug).

  • tracker_update_task — Update an existing task's title, description, status, or dependencies.

  • tracker_get_task — Retrieve details for a specific task.

  • tracker_list_tasks — List tasks, optionally filtered by status, type, or parent.

  • tracker_add_dependency — Add a dependency between two tasks.

  • tracker_visualize — Render an ASCII tree visualization of the task graph.

Built-In MCP Tools

The following tools are powered by Tabnine's infrastructure and run as built-in MCP servers:

  • Remote Code Search — Search across your organization's codebases using Tabnine's cloud indexing. Controlled by tools.enableRemoteCodeSearch (enabled by default).

  • Coaching Guidelines — AI-powered coding best practices tailored to your team. Controlled by tools.enableCoaching (enabled by default).

Tool Summary

Tool Name
Display Name
Category

read_file

ReadFile

File

read_many_files

ReadManyFiles

File

write_file

WriteFile

File

replace

Edit

File

list_directory

ReadFolder

File

glob

FindFiles

File

grep_search

SearchText

Search

run_shell_command

Shell

Execution

google_web_search

GoogleSearch

Web

web_fetch

WebFetch

Web

save_memory

SaveMemory

Memory

write_todos

WriteTodos

Planning

enter_plan_mode

Enter Plan Mode

Planning

exit_plan_mode

Exit Plan Mode

Planning

ask_user

Ask User

Interaction

activate_skill

Activate Skill

Skills

get_internal_docs

GetInternalDocs

Docs

tracker_create_task

Create Task

Tracker

tracker_update_task

Update Task

Tracker

tracker_get_task

Get Task

Tracker

tracker_list_tasks

List Tasks

Tracker

tracker_add_dependency

Add Dependency

Tracker

tracker_visualize

Visualize Tracker

Tracker

Viewing Tools in the CLI

To see which tools are currently available:

To include descriptions:

This shows all registered tools from the tool registry, including any MCP tools and subagents you have configured.

Tool Configuration

Auto-Approval

By default, tools that modify files or execute commands require user confirmation. Read-only tools (read, search, list, glob) execute automatically.

To auto-approve specific tools, use the tools.allowed setting:

For shell commands, you can narrow approval to specific command prefixes by using the run_shell_command(prefix) syntax.

You can also change the approval mode during a session using Ctrl+Y to cycle between Default, Auto-Edit, and Plan modes. See Keyboard Shortcuts for the full list.

Restricting Tools

To restrict which built-in tools are available:

  • tools.core — Allowlist of built-in tool names. Only these tools are loaded.

  • tools.exclude — Denylist of tool names to remove.

Tool Settings Reference

Setting
Type
Default
Description

tools.shell.enableInteractiveShell

boolean

true

Use node-pty for an interactive shell. Falls back to child_process if unavailable.

tools.shell.showColor

boolean

false

Show color in shell output.

tools.shell.pager

string

"cat"

Pager command for shell output.

tools.shell.inactivityTimeout

number

300

Max seconds without output before shell times out (5 minutes).

tools.shell.enableShellOutputEfficiency

boolean

true

Enable shell output efficiency optimizations.

tools.useRipgrep

boolean

true

Use ripgrep for grep_search. Falls back to built-in grep if disabled or unavailable.

tools.enableWebTools

boolean

false

Enable the google_web_search tool.

tools.enableWebFetchTool

boolean

false

Enable the web_fetch tool.

tools.enableRemoteCodeSearch

boolean

true

Enable Tabnine Remote Code Search MCP server.

tools.enableCoaching

boolean

true

Enable Tabnine Coaching Guidelines MCP server.

tools.truncateToolOutputThreshold

number

40000

Truncate tool output exceeding this many characters. First 20% and last 80% are kept.

tools.searchOutputLimitEnabled

boolean

true

Limit search tool result size.

tools.searchMaxChars

number

50000

Max characters from search tools.

tools.disableLLMCorrection

boolean

true

Disable LLM-based error correction for the replace tool. When true, edits fail immediately if the exact string isn't found instead of attempting self-correction.

tools.allowed

string[]

Tool names that bypass the confirmation dialog.

tools.core

string[]

Restrict built-in tools to this allowlist.

tools.exclude

string[]

Tool names to exclude entirely.

experimental.plan

boolean

true

Enable Plan Mode (enter_plan_mode / exit_plan_mode).

experimental.taskTracker

boolean

false

Enable experimental task tracker tools.

Tools that modify files or run shell commands always ask for confirmation before performing the action, unless auto-approved via tools.allowed or the approval mode is set to YOLO or Auto-Edit.

Last updated

Was this helpful?