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 asread_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.gitignoreand.tabnineignore.glob— Find files matching glob patterns (e.g.,**/*.ts,src/*.js). Returns absolute paths sorted by modification time (newest first).
Search
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 isgrep_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— enablesweb_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
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
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?
