Appearance
Kiro Terminal integration 允许你用自然语言描述想做的事,由 Kiro 转换为终端命令并在执行前请求审批。你可以配置 trusted commands 自动通过常用命令,也可以用 command denylist 阻止危险模式被自动执行。
Kiro Terminal:用自然语言执行命令并控制审批风险
Kiro 的 terminal integration 让你不用记住每条命令语法,可以直接描述目标,例如“安装依赖”“查看 git status”“启动开发服务器”。Kiro 会把请求转换成可执行命令,并在执行前让你审批。
这类能力很适合 AI IDE 工作流:Chat 里讨论问题,Terminal 里执行命令,输出再回到 Chat 里分析。但命令执行有风险,所以审批和信任规则必须认真配置。
基本使用方式
你可以直接对 Kiro 说:
text
Install the project dependenciestext
Check the git statustext
Find all TypeScript files in the src foldertext
Run the development serverKiro 会生成对应终端命令,并在运行前展示给你。你可以选择:
- Modify:修改命令后再运行。
- Reject:取消执行。
- Run:只执行这一次。
- Run and Trust:执行并信任未来类似命令。
Trusted commands 怎么工作
Trusted commands 用前缀匹配决定哪些命令可以自动通过。你可以在 Settings → Kiro Agent: Trusted Commands 中配置,支持用户级和工作区级设置。
如果配置:
json
["npm install", "git status"]那么 npm install 和 git status 会被信任,但 npm install --save、git status --short 不会自动通过,因为它们不是精确匹配。
如果配置:
json
["npm install *"]则 npm install --save、npm install express 等以该模式匹配的命令可以自动通过。
如果配置:
json
["npm *", "git *"]所有以 npm 或 git 开头的命令都会被信任,包括带管道、重定向、链式命令的复杂命令。这很方便,也更危险。
不要轻易使用 universal trust
如果 trusted commands 写成:
json
["*"]任何命令都会被信任。除非你非常确定运行环境隔离且风险可控,否则不建议这样做。
对真实项目来说,更安全的做法是只信任低风险、可重复的命令,例如 git status、npm test *,而不要信任会删除、写入、推送或改权限的命令。
Command denylist
Command denylist 是另一层安全保护。它使用 substring matching,只要命令中包含 denylist 字符串,即使匹配 trusted commands,也需要人工审批。
建议加入这些危险模式:
json
{
"kiroAgent.commandDenylist": [
"rm -rf",
"sudo",
"chmod 777",
"eval",
"curl | sh",
"wget | sh",
"> /dev/",
"mkfs",
"dd if="
]
}审批顺序是:
- 先检查 denylist,命中则必须人工审批。
- 再检查 trusted commands,匹配则自动通过。
- 都不匹配时,默认要求人工审批。
例如信任 npm *,但 denylist 包含 --force,那么 npm install --force 仍需要手动确认。
使用 #terminal 引用终端上下文
你可以在 Chat 中用 #terminal 引用当前活动终端的最近输出:
text
#terminal analyze the error from the last npm run build注意:#terminal 指向当前 active / visible terminal。如果你打开了多个终端,使用前要确认想引用的终端是当前活动终端。
Kiro 可以基于真实输出做错误分析、解释日志、建议下一步,并识别反复出现的环境或依赖问题。
常见问题
Q: Kiro 运行命令前会先问我吗?
A: 默认会。除非命令匹配 trusted commands 且没有命中 denylist,否则会要求审批。
Q: Run and Trust 安全吗?
A: 取决于命令模式。信任 git status 风险很低,信任 git * 或 npm * 风险更高,因为复杂链式命令也可能被前缀匹配放行。
Q: #terminal 引用哪个终端?
A: 引用当前活动或可见的终端窗口。多个终端并存时要先切到正确终端。