Loading image...Kiro

Product

  • About Kiro
  • IDE
  • CLI
  • Web
  • Mobile
  • Pricing
  • Downloads

For

  • Enterprise
  • Startups
  • Students

Community

  • Overview
  • Ambassadors
  • Discord
  • Events
  • Powers
  • Shop
  • Showcase

Resources

  • Docs
  • Blog
  • Changelog
  • FAQs
  • Report a bug
  • Suggest an idea
  • Billing support

Social

Site TermsLicenseResponsible AI PolicyLegalPrivacy PolicyCookie Preferences
Loading image...Kiro
  • CLI
  • IDE
  • Web
  • Mobile
  • Enterprise
  • Pricing
  • Docs
SIGN INDOWNLOADS
Loading image...Kiro

Get Started

InstallationAuthenticationYour first project

Models

OverviewAvailable modelsReasoning effort

Features

How Kiro works
Specs
Steering
Hooks
MCP
Permissions
Custom agents
Agent Skills
Powers
CompactionKiroignoreCheckpoints and rewind
Built-in tools
Web tools
Code intelligence
Configuration scopes

IDE 1.x

What's new in 1.0
Setup & First Run
Editor
Chat
Experimental
Troubleshooting0.x reference

CLI

What's new in 3.0
Setup & First Run
Terminal UI
Chat
Headless modeACPAuto complete
Experimental
2.x reference

Web - Preview

Setup & First RunIdentity Center
Connect your repositories
Working with the agent
Autonomous modeAutomations
Sandbox

Mobile - Preview

Overview

Commands and Reference

CLI commandsSlash commandsBuilt-in toolsExit codesSettingsIDE keyboard shortcuts

Billing

OverviewManaging your subscriptionUpgrading your planDowngrading your planCancelling your planPurchasing add-on creditsManaging your paymentsManaging usage notificationsManaging your taxesContacting billing supportDeleting your accountRelated questions

Enterprise

ConceptsOnboarding quickstart
Connecting your identity provider
Subscribe your teamManage subscriptions
Governance
Monitor and track
SettingsManaged updatesBillingIAMSupported regions

Privacy and Security

OverviewData protectionCode referencesCompliance validationInfrastructure securityIAM permissionsFirewalls, proxies, and data perimetersVPC endpoints (AWS PrivateLink)

Guides

Overview
Language support
Learn by playing

Migration

Migrating from Q DeveloperMigrating from VSCodeUpgrading from Q CLI
  1. Docs
  2. Features
  3. Built-in tools
  4. Code intelligence

Code intelligence


Code intelligence provides two complementary layers of code understanding:

  • Tree-sitter (built-in) - Out-of-the-box code intelligence for 18 languages. Search symbols, get document outlines, and look up definitions without installing anything extra.
  • LSP integration (optional) - Enhanced precision with find references, go-to-definition, hover docs, rename refactoring, and diagnostics. Requires language server installation.

All tree-sitter features below are cross-surface (IDE, CLI, Web, Mobile). LSP features require a language server and are available on IDE and CLI only.

CapabilityRequires LSP
Symbol search (fuzzy)—
Document symbols—
Pattern search (AST)—
Pattern rewrite (AST)—
Codebase overview—
Find references✓
Go to definition✓
Rename symbol✓
Get diagnostics✓
Hover documentation✓
Info

LSP features (find references, go-to-definition, rename, diagnostics, hover) are available on IDE and CLI only. They require a language server installed for your language.

Supported languages

Bash, C, C++, C#, Elixir, Go, Java, JavaScript, Kotlin, Lua, PHP, Python, Ruby, Rust, Scala, Swift, TSX, TypeScript

Symbol search

Find functions, classes, and methods by name with fuzzy matching:

text
> Find the UserRepository class Searching for symbols matching: "UserRepository" (using tool: code) ✓ Found 1 match Class UserRepository at src/repositories/user.repository.ts:15:1

Pattern search

AST-based structural code search. Find code by structure, not just text.

Metavariables

PatternMatches
$VARSingle node (identifier, expression)
$$$Zero or more nodes (statements, parameters)

Examples

javascript
// Find all console.log calls pattern: console.log($ARG) language: javascript // Find all async functions pattern: async function $NAME($$$PARAMS) { $$$ } language: typescript // Find all .unwrap() calls pattern: $E.unwrap() language: rust

Pattern rewrite

Automated code transformations using AST patterns:

javascript
// Convert var to const pattern: var $N = $V replacement: const $N = $V language: javascript // Modernize hasOwnProperty pattern: $O.hasOwnProperty($P) replacement: Object.hasOwn($O, $P) language: javascript // Convert unwrap to expect pattern: $E.unwrap() replacement: $E.expect("unexpected None") language: rust

Codebase overview

Get a high-level overview of a workspace or directory:

The agent uses code intelligence automatically when exploring your project. Ask "give me an overview of this codebase" or "what does this project do?"

Documentation generation

Generate project documentation based on codebase analysis:

Ask the agent: "Generate a README for this project" or "Create an AGENTS.md file."

LSP integration

With a language server installed, code intelligence gains additional precision:

  • Find references - locate all usages of a symbol
  • Go to definition - navigate to where a symbol is defined
  • Rename symbol - rename across the codebase
  • Get diagnostics - errors and warnings for a file
  • Hover documentation - type information at a position
Info

LSP features require language server installation. See language-specific guides: TypeScript/JavaScript, Python, Java.

In the IDE, LSP-backed capabilities come from the language extensions you already have installed. On the CLI, enable them per workspace with /code init - see the setup reference below.

Setting up LSP on the CLI

LSP is optional and workspace-scoped

The built-in tree-sitter features work out of the box with no initialization needed. You only need /code init for the enhanced LSP features. Code intelligence is configured per workspace, not globally - each project maintains its own LSP settings independently.

How it works

Kiro CLI spawns LSP server processes in the background that communicate via JSON-RPC over stdio. When you initialize a workspace, it detects languages from project markers (like package.json, Cargo.toml) and file extensions, then starts the appropriate language servers. These servers continuously analyze your code and maintain an index of symbols, types, and references. When you make queries, Kiro translates your natural language into LSP protocol requests, sends them to the relevant server, and formats the responses back into readable output.

Initialize LSP

Run this slash command in your project root:

/code init

This creates .kiro/settings/lsp.json and starts language servers:

✓ Workspace initialization started Workspace: /path/to/your/project Detected Languages: ["python", "rust", "typescript"] Project Markers: ["Cargo.toml", "package.json"] Available LSPs: ○ clangd (cpp) - available ○ gopls (go) - not installed ◐ jdtls (java) - initializing... ✓ pyright (python) - initialized (687ms) ✓ rust-analyzer (rust) - initialized (488ms) ○ solargraph (ruby) - not installed ✓ typescript-language-server (typescript) - initialized (214ms)

Status indicators: ✓ initialized and ready · ◐ currently initializing · ○ available (installed but not needed) · ○ not installed

  • Restart LSP servers: if language servers shut down or become unresponsive, use /code init -f.
  • Auto-initialization: after the first /code init, Kiro CLI automatically initializes code intelligence on startup when .kiro/settings/lsp.json exists in the workspace.
  • Disabling: delete .kiro/settings/lsp.json to disable. Re-enable anytime with /code init.

Supported LSP servers

LanguageExtensionsServerInstall command
TypeScript/JavaScript.ts, .js, .tsx, .jsxtypescript-language-servernpm install -g typescript-language-server typescript
Rust.rsrust-analyzerrustup component add rust-analyzer
Python.pypyrightpip install pyright
Go.gogoplsgo install golang.org/x/tools/gopls@latest
Java.javajdtlsbrew install jdtls (macOS)
Ruby.rbsolargraphgem install solargraph
C/C++.c, .cpp, .h, .hppclangdbrew install llvm (macOS) or apt install clangd (Linux)
Kotlin.kt, .ktskotlin-language-serverbrew install kotlin-language-server

Using language servers

Query semantic code intelligence with natural language - search symbols, navigate definitions, find references, rename across files, get diagnostics, view documentation, and discover available APIs:

> Find references of Person class Finding all references at: auth.ts:42:10 1. src/auth.ts:42:10 - export function authenticate(...) 2. src/handlers/login.ts:15:5 - authenticate(credentials) 3. src/handlers/api.ts:89:12 - await authenticate(token)
> Dry run: rename the method "FetchUser" to "fetchUserData" Dry run: Would rename 12 occurrences in 5 files
> What methods are available on the s3Client instance? Available completions: 1. putObject - Function: (params: PutObjectRequest) => Promise<PutObjectOutput> 2. getObject - Function: (params: GetObjectRequest) => Promise<GetObjectOutput> 3. deleteObject - Function: (params: DeleteObjectRequest) => Promise<DeleteObjectOutput>

Custom language servers

Add custom language servers by editing .kiro/settings/lsp.json:

json
{ "languages": { "mylang": { "name": "my-language-server", "command": "my-lsp-binary", "args": ["--stdio"], "file_extensions": ["mylang", "ml"], "file_patterns": ["Mylangfile", "mylang.config.*"], "project_patterns": ["mylang.config"], "exclude_patterns": ["**/build/**"], "multi_workspace": false, "initialization_options": { "custom": "options" }, "request_timeout_secs": 60 } } }

Fields:

  • name: Display name for the language server
  • command: Binary/command to execute
  • args: Command line arguments (usually ["--stdio"])
  • file_extensions: File extensions this server handles
  • file_patterns: Optional list of glob patterns matched against the full filename. Use this for language servers that target specific filenames without a standard extension, like Dockerfile, Dockerfile.*, or docker-compose*.yml. Exact matches win over globs, and more specific globs win over broader ones regardless of declaration order.
  • project_patterns: Files that indicate a project root (e.g., package.json)
  • exclude_patterns: Glob patterns to exclude from analysis
  • multi_workspace: Set to true if the LSP supports multiple workspace folders (default: false)
  • initialization_options: LSP-specific configuration passed during initialization
  • request_timeout_secs: Timeout in seconds for LSP requests. Default is 60.

After editing, restart Kiro CLI to load the new configuration.

CLI commands

CommandPurpose
/code initInitialize code intelligence in the current directory
/code init -fForce re-initialization (restart all LSP servers)
/code statusShow workspace status and LSP server states
/code overview [path] [--silent]Codebase structure overview
/code summaryInteractive documentation generation
/code logsDisplay LSP logs for troubleshooting

/code logs options: -l, --level <LEVEL> filter (ERROR, WARN, INFO, DEBUG, TRACE; default ERROR) · -n, --lines <N> number of lines (default 20) · -p, --path <PATH> export logs to a JSON file.

Troubleshooting

IssueCause(s)Solution
Code tool is not enabled for this agentAgent doesn't have the code tool in its tool listAdd "code" to the agent's tools array, or use @builtin to include all built-in tools, or use @builtin/code
Workspace is still initializingLSP servers are starting upWait and try again. If servers crashed, use /code init -f to restart
LSP initialization failedCheck logs for details: /code logs -l ERROR
No symbols foundLanguage server is still indexing, file has syntax errors, or symbol name doesn't matchCheck the file for errors, try broader search terms
No definition foundPosition doesn't point to a symbolVerify the row and column numbers point to a symbol name

Not every language server supports every operation (some may not support rename or formatting), and large codebases can be slow to index initially.

Permissions

Symbol lookups and code analysis within your workspace run without prompting. Operations targeting files outside the workspace require approval.

Next steps

  • Built-in tools overview - full tool catalog
  • Language support guides - per-language setup
Page updated: August 4, 2026
Web tools
Configuration scopes