Appearance
Kiro CLI 内置了一套开箱即用的工具集,涵盖文件读写(read/write)、内容搜索(grep/glob)、Shell 命令执行(shell)、AWS CLI 调用(aws)、网页访问(web_search/web_fetch)、代码智能(code)、任务委托(delegate/subagent)等。每个工具都支持在 Agent 配置的 toolsSettings 字段中设置允许路径、拒绝路径或命令白名单,精确控制 AI 的访问边界。本文逐一介绍各工具的名称、别名、配置项,以及实际使用示例。
read — 读取文件与目录
工具名:read
别名:fs_read、fsRead
功能:读取文件、目录及图片内容。
> what dependencies does my application have
Reading file: src/snake/package.json, all lines (using tool: read)
✓ Successfully read 1417 bytes from src/snake/package.json
- Completed in 0.86s
> Your application has:
Runtime Dependencies:
- typescript (^3.5.1)
- gh-pages (^2.0.1)
Dev Dependencies:
- sass (^1.20.3)
- eslint (^5.16.0)
- jest (^29.5.0) + ts-jest可在 Agent 配置中限定读取范围:
json
{
"toolsSettings": {
"read": {
"allowedPaths": ["~/projects", "./src/**"],
"deniedPaths": ["d1/denied/path/", "d2/denied/path/**/file.txt"]
}
}
}配置项
| 选项 | 类型 | 必填 | 说明 |
|---|---|---|---|
| allowedPaths | 路径数组 | 否 | 无需提示即可读取的路径,支持 glob 模式 |
| deniedPaths | 路径数组 | 否 | 明确拒绝的路径 |
路径支持类似 gitignore 的 glob 语法,例如 ~/temp 会匹配 ~/temp/child 及其所有子目录。
glob — 快速文件发现
工具名:glob
功能:使用 glob 模式快速查找文件,自动遵守 .gitignore。建议用此工具替代 bash 中的 find 命令。
> find all TypeScript test files in my project
Finding files matching pattern: **/*.test.ts (using tool: glob)
✓ Found 8 files
- Completed in 0.12s配置示例:
json
{
"toolsSettings": {
"glob": {
"allowedPaths": ["~/projects", "./src/**"],
"deniedPaths": ["/etc", "/var"],
"allowReadOnly": true
}
}
}配置项
| 选项 | 类型 | 默认值 | 说明 |
|---|---|---|---|
| allowedPaths | 字符串数组 | [] | 无需提示即可搜索的路径,支持 glob |
| deniedPaths | 字符串数组 | [] | 拒绝的路径,优先级高于允许规则 |
| allowReadOnly | boolean | false | 允许在任何路径搜索而不弹出提示 |
grep — 正则内容搜索
工具名:grep
功能:使用正则表达式快速搜索文件内容,自动遵守 .gitignore。建议用此工具替代 bash 中的 grep、rg、ag 命令。
> find all TODO comments in my project
Searching for pattern: TODO (using tool: grep)
✓ Found 12 matches across 5 files
- Completed in 0.34s配置选项与 glob 工具相同,支持 allowedPaths、deniedPaths、allowReadOnly。
write — 创建与编辑文件
工具名:write
别名:fs_write、fsWrite
功能:创建新文件或编辑现有文件。
默认情况下,write 工具以内置 inline diff 展示代码变更。如需对接外部 diff 工具,参见 自定义 diff 工具。
配置示例:
json
{
"toolsSettings": {
"write": {
"allowedPaths": ["~/projects/output.txt", "./src/**"],
"deniedPaths": ["/d1/denied/path/", "/d2/denied/path/**/file.txt"]
}
}
}shell — 执行 Shell 命令
工具名:shell
别名:execute_bash、execute_cmd
功能:执行指定的 bash 命令。
json
{
"toolsSettings": {
"shell": {
"allowedCommands": ["git status", "git fetch"],
"deniedCommands": ["git commit .*", "git push .*"],
"autoAllowReadonly": true
}
}
}配置项
| 选项 | 类型 | 默认值 | 说明 |
|---|---|---|---|
| allowedCommands | 字符串数组 | [] | 无需提示即可执行的命令(支持正则) |
| deniedCommands | 字符串数组 | [] | 拒绝的命令,优先级高于允许规则 |
| autoAllowReadonly | boolean | false | 只读命令自动放行,不限制写操作 |
| denyByDefault | boolean | false | 为 true 时,不在白名单且未自动放行的命令一律拒绝 |
注意:allowedCommands 和 deniedCommands 使用正则语法,自动添加 \A 和 \z 锚点,不支持 lookaround 语法。
aws — 执行 AWS CLI 操作
工具名:aws
别名:use_aws
功能:使用指定的服务名、操作名及参数调用 AWS CLI。
json
{
"toolsSettings": {
"aws": {
"allowedServices": ["s3", "lambda", "ec2"],
"deniedServices": ["eks", "rds"],
"autoAllowReadonly": true
}
}
}web_search / web_fetch — 网页访问
两个工具的功能:
| 工具 | 说明 |
|---|---|
| web_search | 搜索互联网 |
| web_fetch | 从指定 URL 抓取内容 |
web_fetch 支持三种抓取模式,以便灵活管理上下文窗口:
| 模式 | 行为 | 适用场景 |
|---|---|---|
| selective(默认) | 在搜索词匹配处前后各返回 10 句;无匹配时返回 20 句 | 精准提取 |
| truncated | 前 8000 个字符 | 快速预览 |
| full | 完整内容(最大 10MB) | 全面分析 |
URL 权限配置
json
{
"toolsSettings": {
"web_fetch": {
"trusted": [".*docs\\.aws\\.amazon\\.com.*", ".*github\\.com.*"],
"blocked": [".*pastebin\\.com.*"]
}
}
}| 选项 | 类型 | 说明 |
|---|---|---|
| trusted | 正则数组 | 自动放行的 URL 模式,无需提示 |
| blocked | 正则数组 | 拒绝的 URL 模式,优先级高于 trusted |
限制
- 单页最大 10MB
- 请求超时 30 秒
- 最多跟随 10 次重定向
- 仅支持 text/html 类型页面
- 失败时自动重试 3 次
introspect — 自我感知
工具名:introspect
功能:让 Kiro CLI 回答关于自身功能、命令、设置的问题,使用官方文档作为知识源。
当你问 Kiro CLI 关于它自己的问题时,introspect 工具会自动激活:
> How do I save conversations?
Introspecting to get you the right information (using tool: introspect)
> You can save conversations using `/chat save <PATH>`.在企业环境中如果模型下载受限,可开启 progressive 模式:
kiro-cli settings set introspect.progressiveMode true开启后跳过模型下载,改为返回文档索引,由 LLM 按需加载。
code — 代码智能
工具名:code
功能:提供符号搜索、LSP 集成、基于模式的代码搜索与重写等代码智能能力。
> Find the UserRepository class
Searching for symbols matching: "UserRepository" (using tool: code)
✓ Found 1 match
- Completed in 0.45s
> Found: Class UserRepository at src/repositories/user.repository.ts:15:1详细文档参见 代码智能。此工具无额外配置项。
tool_search — 按需加载 MCP 工具
工具名:tool_search
功能:按需查找并加载 MCP 工具,避免每次请求都发送全量工具定义,节省上下文 token。
此工具默认自动放行(只读操作)。参数如下:
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| tool_id | string | 二选一 | 精确工具标识,格式 server_name::tool_name |
| query | string | 二选一 | 搜索关键词 |
| max_results | integer | 否 | 返回结果上限(默认 5) |
delegate — 委托后台 Agent
工具名:delegate
功能:将任务委托给后台异步运行的 Agent,适合耗时较长、不需要立即结果的任务。此工具无额外配置项。
subagent — 子 Agent 并行执行
工具名:subagent
别名:use_subagent
功能:将复杂任务分解,委托给拥有独立上下文的专用子 Agent 并行执行,防止主对话上下文膨胀。
- 最多同时启动 4 个子 Agent
- 每个子 Agent 拥有独立上下文
- 实时显示所有子 Agent 的运行状态
配置项
| 设置 | 类型 | 说明 |
|---|---|---|
| availableAgents | string[] | 限定可用作子 Agent 的 Agent 名称,支持 glob |
| trustedAgents | string[] | 指定无需权限提示即可运行的 Agent |
json
{
"toolsSettings": {
"subagent": {
"availableAgents": ["reviewer", "tester", "analyzer", "docs-*"],
"trustedAgents": ["reviewer", "tester"]
}
}
}详细文档参见 子 Agent。
其他内置工具
| 工具名 | 功能 | 配置 |
|---|---|---|
| report | 打开浏览器提交 GitHub Issue 或功能请求 | 无 |
| knowledge(实验性) | 跨会话存储与检索知识,支持语义搜索 | 无 |
| thinking(实验性) | 将复杂任务拆解为原子步骤的内部推理机制 | 无 |
| todo(实验性) | 创建和管理多步任务的 ToDo 列表 | 无 |
| session | 临时覆盖当前会话的 CLI 设置,会话结束后自动重置 | 无 |
工具权限概述
在 Agent 配置的 allowedTools 中显式列出工具,可跳过单次确认:
json
{
"allowedTools": [
"read",
"knowledge",
"@git/git_status"
]
}默认行为:
report默认信任read、grep、glob在当前工作目录下默认信任shell、write、aws默认需要每次确认,但可通过toolsSettings配置白名单放行
MCP 服务器工具在 toolsSettings 中使用 @server_name/tool_name 格式作为键:
json
{
"toolsSettings": {
"@git/git_status": {
"git_user": "$GIT_USER"
}
}
}常见问题
Q:如何让 shell 工具只允许只读命令,禁止所有写操作?
A:将 autoAllowReadonly 设为 true,同时将 denyByDefault 设为 true,并在 deniedCommands 中用正则匹配所有写操作命令(如 rm .*、git push .*)。这样只读命令自动放行,写命令一律拒绝。
Q:web_fetch 的 selective 模式和 full 模式有什么区别,应该如何选择?
A:selective 模式(默认)只返回与搜索词匹配处附近的片段,最多几十句,适合目标明确的信息提取,可大量节省上下文 token。full 模式返回完整页面(最大 10MB),适合需要全文分析的场景,但会消耗大量上下文窗口。日常使用建议保持 selective 模式。
Q:在 Agent 配置中,allowedTools 和 toolsSettings 有什么区别?
A:allowedTools 是工具白名单——列出的工具在使用时不弹出确认框。toolsSettings 是细粒度权限配置——可以为特定工具设定允许路径、拒绝路径、命令白名单等规则,即使工具未在 allowedTools 中也可以通过路径/命令级别的规则自动放行部分操作。