工具链执行
Claude Code 的核心能力不仅在于代码理解与生成,更在于它能深度集成并执行开发者日常使用的各类工具链。从 Git 操作、包管理、构建编译到数据库迁移、云部署,Claude Code 通过内置工具系统、MCP 协议扩展、Skills 自定义命令和 Hooks 自动化机制,将 AI 助手从"建议者"转变为"执行者"。本章将系统梳理 Claude Code 的工具链执行能力,涵盖原生集成、安全机制、自定义扩展等各个层面。
1. 内置工具全景
Claude Code 提供了一套丰富的内置工具,覆盖文件操作、代码搜索、命令执行、网络请求等核心场景。这些工具是 Claude 与外部世界交互的基础接口。
1.1 工具分类与权限模型
根据官方文档,内置工具按权限需求分为三类:
| 工具类型 | 示例 | 是否需要权限 | "记住选择"行为 |
|---|---|---|---|
| 只读工具 | Read、Grep、Glob | 否 | 不适用 |
| Bash 命令 | Shell 执行 | 是 | 按项目目录和命令永久记住 |
| 文件修改 | Edit、Write | 是 | 会话结束前有效 |
完整工具列表(来源:Claude Code Docs - Tools Reference):
- 文件操作:
Read(读取文件)、Edit(精准编辑)、Write(创建/覆盖文件)、Glob(模式匹配找文件) - 代码搜索:
Grep(内容搜索)、LSP(语言服务器协议,支持跳转到定义、查找引用、类型检查) - 命令执行:
Bash(执行 Shell 命令)、PowerShell(Windows 原生 PowerShell 执行) - 扩展能力:
Monitor(通过插件系统启用,用于后台任务监控) - 网络请求:
WebFetch(获取 URL 内容)、WebSearch(网络搜索) - 任务管理:
TaskCreate、TaskList、TaskUpdate、TaskStop(后台任务管理) - Notebook:
NotebookEdit(修改 Jupyter Notebook 单元格) - Agent:
Agent(生成子代理处理任务) - MCP:
ListMcpResourcesTool、ReadMcpResourceTool(MCP 资源操作)
1.2 Bash 工具的行为特性
Bash 工具是工具链执行的核心,理解其行为特性至关重要:
工作目录持久化:
- 主会话中
cd的目录变更会延续到后续 Bash 命令(只要仍在项目目录或--add-dir添加的目录内) - 如果
cd跳出了这些目录,Claude Code 会自动重置到项目目录并提示Shell cwd was reset to <dir> - 子代理会话中工作目录变更不会延续
- 设置
CLAUDE_BASH_MAINTAIN_PROJECT_WORKING_DIR=1可禁用目录延续,每次 Bash 命令都从项目目录开始
环境变量隔离:
- 每个 Bash 命令在独立进程中执行,
export不会跨命令持久化 - 如需持久化环境变量,在启动 Claude Code 前设置
CLAUDE_ENV_FILE指向一个 shell 脚本,或使用 SessionStart Hook 动态填充
只读命令免提示:
- 内置识别的只读命令包括:
ls、cat、head、tail、grep、find、wc、diff、stat、du、cd以及只读形式的git命令 - 这些命令在任何模式下都不需要权限提示
- 但带有写操作标志的命令(如
find -delete、sed -i)即使基础命令是只读的也会触发提示
2. 原生工具集成
2.1 GitHub CLI (gh)
Claude Code 对 gh 命令有良好的原生支持,可通过权限规则精细控制:
{
"permissions": {
"allow": [
"Bash(gh pr view *)",
"Bash(gh pr diff *)",
"Bash(gh pr list *)",
"Bash(gh issue view *)",
"Bash(gh repo view *)"
],
"deny": [
"Bash(gh pr merge *)",
"Bash(gh repo delete *)"
]
}
}
典型工作流示例:
# 让 Claude 查看 PR 差异并给出评审意见
gh pr diff 123 | claude "Review this PR and suggest improvements"
# 在 Skill 中动态注入 PR 信息
---
name: pr-summary
description: Summarize changes in a pull request
context: fork
agent: Explore
allowed-tools: Bash(gh *)
---
## Pull request context
- PR diff: !`gh pr diff`
- PR comments: !`gh pr view --comments`
- Changed files: !`gh pr diff --name-only`
## Your task
Summarize this pull request...
!command`` 语法会在 Skill 内容发送给 Claude 之前执行命令,输出替换占位符。这是预处理机制,Claude 只看到最终结果。
2.2 包管理工具 (npm / pnpm / yarn / pip)
包管理是日常开发最高频的操作之一。通过合理的权限配置,可以让 Claude 自主处理依赖:
{
"permissions": {
"allow": [
"Bash(npm run *)",
"Bash(npm install)",
"Bash(npm ci)",
"Bash(pnpm *)",
"Bash(yarn *)",
"Bash(pip install *)",
"Bash(pip list)"
],
"deny": [
"Bash(npm publish *)",
"Bash(npm unpublish *)",
"Bash(npm audit fix *)"
]
}
}
实际使用场景:
# 让 Claude 安装缺失的依赖并修复版本冲突
"项目构建报错,帮我检查并修复依赖问题"
# Claude 会自动执行:
# 1. 读取 package.json 和 lock 文件
# 2. 运行 npm install 或 pnpm install
# 3. 根据报错信息调整依赖版本
# 4. 重新运行构建验证
2.3 Docker
Docker 命令通常涉及容器生命周期管理,建议按操作类型分级授权:
{
"permissions": {
"allow": [
"Bash(docker ps)",
"Bash(docker images)",
"Bash(docker logs *)",
"Bash(docker build *)",
"Bash(docker compose *)"
],
"ask": [
"Bash(docker exec *)"
],
"deny": [
"Bash(docker system prune *)",
"Bash(docker volume rm *)",
"Bash(docker rmi -f *)"
]
}
}
注意事项:
docker exec允许在任意容器中以任意身份执行任意命令,等同于 root 权限,建议放在ask而非allow- 沙箱模式下,Docker 命令的子进程同样受沙箱限制
- 通过 Unix Socket 访问 Docker Daemon 时需注意
allowUnixSockets配置可能带来的沙箱绕过风险
2.4 Kubernetes (kubectl)
kubectl 操作直接影响生产环境,建议采用严格的权限控制:
{
"permissions": {
"allow": [
"Bash(kubectl get pods|services|deployments *)",
"Bash(kubectl describe *)",
"Bash(kubectl logs *)",
"Bash(kubectl top *)"
],
"ask": [
"Bash(kubectl get secrets *)",
"Bash(kubectl apply *)",
"Bash(kubectl delete *)",
"Bash(kubectl rollout *)"
],
"deny": [
"Bash(kubectl delete namespace *)",
"Bash(kubectl drain *)"
]
},
"sandbox": {
"enabled": true,
"filesystem": {
"allowWrite": ["~/.kube"]
}
}
}
沙箱配置要点:
- kubectl 需要写入
~/.kube目录来缓存集群配置和认证信息 - 使用
sandbox.filesystem.allowWrite而非excludedCommands来授权,这是推荐做法 - 所有子进程(包括 kubectl 调用的底层命令)都继承相同的沙箱限制
3. 构建工具集成
3.1 Vite
Vite 作为现代前端构建工具,与 Claude Code 配合流畅:
{
"permissions": {
"allow": [
"Bash(vite)",
"Bash(vite build)",
"Bash(vite preview)",
"Bash(npm run dev)",
"Bash(npm run build)",
"Bash(npm run preview)"
]
}
}
Claude 可执行的典型任务:
- 分析
vite.config.ts配置并优化构建性能 - 调整
build.rollupOptions实现代码分割 - 配置
server.proxy解决开发环境跨域 - 诊断构建错误并修复
3.2 Webpack
{
"permissions": {
"allow": [
"Bash(webpack *)",
"Bash(npx webpack *)",
"Bash(npm run build:prod)",
"Bash(npm run build:dev)"
]
}
}
3.3 TypeScript 编译器
TypeScript 编译是 Claude Code 最常执行的构建操作之一:
{
"permissions": {
"allow": [
"Bash(tsc)",
"Bash(tsc --noEmit)",
"Bash(tsc --watch)",
"Bash(npx tsc *)",
"Bash(npm run type-check)"
]
}
}
与 LSP 工具的协同:
- Claude Code 的
LSP工具在每次文件编辑后自动报告类型错误和警告 - 这消除了单独的编译步骤,Claude 可以在编辑过程中实时修复类型问题
- LSP 支持:跳转到定义、查找引用、获取类型信息、列出文件符号、查找接口实现、追踪调用层次
3.4 Babel / SWC / esbuild
{
"permissions": {
"allow": [
"Bash(babel *)",
"Bash(npx babel *)",
"Bash(npx esbuild *)",
"Bash(npx swc *)"
]
}
}
4. 数据库工具
4.1 SQL 查询
通过 MCP 服务器,Claude Code 可以直接连接数据库执行查询。以 PostgreSQL 为例,在 settings.json 中配置 mcpServers:
{
"mcpServers": {
"postgres": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-postgres", "postgresql://localhost/mydb"]
}
}
}
代码中使用:
const options = {
mcpServers: {
postgres: {
command: "npx",
args: ["-y", "@modelcontextprotocol/server-postgres", "postgresql://localhost/mydb"]
}
},
allowedTools: ["mcp__postgres__query"]
};
Claude 会自动发现数据库 Schema,编写 SQL 查询并返回结果。
4.2 ORM 操作 (Prisma / Drizzle)
Prisma 工作流:
{
"permissions": {
"allow": [
"Bash(npx prisma migrate dev)",
"Bash(npx prisma migrate deploy)",
"Bash(npx prisma generate)",
"Bash(npx prisma studio)",
"Bash(npx prisma db pull)",
"Bash(npx prisma db seed)"
],
"ask": [
"Bash(npx prisma migrate reset)",
"Bash(npx prisma db push)"
]
}
}
Drizzle 工作流:
{
"permissions": {
"allow": [
"Bash(npx drizzle-kit generate)",
"Bash(npx drizzle-kit migrate)",
"Bash(npx drizzle-kit push)",
"Bash(npx drizzle-kit studio)",
"Bash(npx drizzle-kit pull)"
]
}
}
4.3 迁移脚本管理
Claude Code 可以协助规划和生成零停机数据库迁移,包括:
- Expand-Contract 模式:用于列重命名和类型变更
- 数据回填脚本:迁移后填充新列数据
- 回滚程序:为每个迁移准备回滚方案
{
"permissions": {
"allow": [
"Bash(npx prisma migrate dev --create-only)",
"Bash(npx prisma migrate status)",
"Bash(npx prisma migrate resolve *)"
]
}
}
5. 部署工具
5.1 Vercel CLI
{
"permissions": {
"allow": [
"Bash(vercel)",
"Bash(vercel --version)",
"Bash(vercel env *)",
"Bash(vercel logs *)",
"Bash(vercel list *)"
],
"ask": [
"Bash(vercel --prod)",
"Bash(vercel deploy *)"
]
}
}
5.2 AWS CLI
{
"permissions": {
"allow": [
"Bash(aws s3 *)",
"Bash(aws ec2 describe *)",
"Bash(aws lambda list *)",
"Bash(aws cloudformation describe *)",
"Bash(aws logs *)"
],
"ask": [
"Bash(aws ec2 terminate *)",
"Bash(aws lambda delete *)",
"Bash(aws s3 rm *)"
],
"deny": [
"Bash(aws iam delete *)",
"Bash(aws account *)"
]
}
}
5.3 GCP / Azure CLI
{
"permissions": {
"allow": [
"Bash(gcloud compute instances list)",
"Bash(gcloud projects list)",
"Bash(az resource list)",
"Bash(az account list)"
],
"ask": [
"Bash(gcloud compute instances delete *)",
"Bash(az vm delete *)"
]
}
}
6. 自定义工具:Skills 与 MCP
6.1 Skills:团队内部 CLI 工具封装
Skills 是 Claude Code 扩展能力的核心机制。通过创建 SKILL.md 文件,你可以将团队内部的 CLI 工具、脚本和流程封装为可复用的 AI 命令。
Skill 文件结构:
my-skill/
├── SKILL.md # 主指令文件(必需)
├── template.md # Claude 填充的模板
├── examples/
│ └── sample.md # 示例输出
└── scripts/
└── validate.sh # 可执行脚本
Skill 存储位置与作用域:
| 位置 | 路径 | 适用范围 |
|---|---|---|
| 企业级 | 托管设置 | 组织内所有用户 |
| 个人级 | ~/.claude/skills/<skill-name>/SKILL.md | 所有项目 |
| 项目级 | .claude/skills/<skill-name>/SKILL.md | 仅当前项目 |
| 插件级 | <plugin>/skills/<skill-name>/SKILL.md | 插件启用处 |
封装内部部署工具的 Skill 示例:
<!-- 以下为示意性 Skill 配置,具体 frontmatter 字段请以官方文档为准 -->
<!-- https://code.claude.com/docs/en/skills -->
---
name: deploy-internal
description: Deploy to internal Kubernetes cluster
---
Deploy $ARGUMENTS to production:
1. Run pre-deployment checks: !`our-deploy-cli validate $ARGUMENTS`
2. Apply Kubernetes manifests: `kubectl apply -f k8s/$ARGUMENTS/`
3. Wait for rollout: `kubectl rollout status deployment/$ARGUMENTS`
4. Verify health: !`our-deploy-cli health-check $ARGUMENTS`
5. Send notification to Slack if configured
动态上下文注入:
使用 !`command` 语法可以在 Skill 执行前运行 shell 命令,将输出注入到 Skill 内容中:
---
name: env-status
description: Check environment status
---
## Current Environment
```!
node --version
npm --version
git status --short
kubectl config current-context
Analysis
Based on the above environment information, analyze...
### 6.2 MCP:连接外部服务
Model Context Protocol (MCP) 是连接 AI Agent 与外部工具和数据源的开放标准。
**MCP 工具命名规则**:`mcp__<server-name>__<tool-name>`
**三种传输类型**:
1. **stdio**(本地进程,通过 stdin/stdout 通信):
```json
{
"mcpServers": {
"github": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-github"],
"env": {
"GITHUB_TOKEN": "${GITHUB_TOKEN}"
}
}
}
}
- HTTP/SSE(云端托管服务):
{
"mcpServers": {
"remote-api": {
"type": "sse",
"url": "https://api.example.com/mcp/sse",
"headers": {
"Authorization": "Bearer ${API_TOKEN}"
}
}
}
}
- SDK 内嵌(在应用代码中直接定义工具)
授权访问:
const options = {
mcpServers: { /* 服务器配置 */ },
allowedTools: [
"mcp__github__*", // GitHub 服务器的所有工具
"mcp__db__query", // db 服务器的 query 工具
"mcp__slack__send_message"
]
};
常用 MCP 服务器(来源:MCP Server Directory):
- GitHub:仓库、Issue、PR 操作
- Filesystem:安全文件操作(可配置访问控制)
- PostgreSQL / SQLite:数据库查询
- Puppeteer:浏览器自动化
- Brave Search:网络搜索
- Slack:消息发送
- Git:仓库读取、搜索、操作
6.3 为团队 CLI 创建 MCP 服务器
如果团队有内部 CLI 工具,可以为其创建 MCP 服务器:
// 以下为示意性 MCP 服务器代码,具体 API 请以官方 SDK 文档为准
// https://github.com/modelcontextprotocol/sdk
import { Server } from "@modelcontextprotocol/sdk/server/index.js";
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
const server = new Server({
name: "internal-tools",
version: "1.0.0"
}, {
capabilities: {
tools: {
deploy_service: {
description: "Deploy a service to internal infrastructure",
inputSchema: {
type: "object",
properties: {
service: { type: "string" },
environment: { type: "string", enum: ["staging", "prod"] }
},
required: ["service", "environment"]
}
}
}
}
});
// 处理工具调用
server.setRequestHandler("tools/call", async (request) => {
if (request.params.name === "deploy_service") {
const { service, environment } = request.params.arguments;
// 调用内部部署 API
const result = await internalDeploy(service, environment);
return { content: [{ type: "text", text: result }] };
}
});
const transport = new StdioServerTransport();
await server.connect(transport);
7. 安全执行机制
7.1 权限规则系统
权限规则按 deny -> ask -> allow 顺序评估,第一个匹配的规则生效。
规则语法:
{
"permissions": {
"allow": [
"Bash(npm run *)",
"Bash(git commit *)",
"Bash(* --version)",
"Read(./src/**)",
"Edit(/docs/**)",
"WebFetch(domain:example.com)"
],
"ask": [
"Bash(git push *)",
"Bash(docker *)"
],
"deny": [
"Bash(rm -rf /)",
"Bash(curl *)",
"Read(~/.ssh/**)",
"Read(//etc/passwd)"
]
}
}
路径模式类型:
| 模式 | 含义 | 示例 |
|---|---|---|
//path | 绝对路径 | Read(//Users/alice/secrets/**) |
~/path | 用户主目录 | Read(~/Documents/*.pdf) |
/path | 项目根目录相对 | Edit(/src/**/*.ts) |
path 或 ./path | 当前目录相对 | Read(*.env) |
通配符规则:
*可匹配任意字符序列,包括空格Bash(ls *)匹配ls -la但不匹配lsof(有空格时要求词边界)Bash(ls*)匹配ls -la和lsof(无词边界约束)
进程包装器剥离:
- Claude Code 会自动剥离
timeout、time、nice、nohup、stdbuf等包装器 - 因此
Bash(npm test *)也会匹配timeout 30 npm test - 但
direnv exec、devbox run、mise exec、npx、docker exec不在剥离列表中
7.2 沙箱隔离
沙箱通过操作系统级原语实现文件系统和网络隔离(来源:Claude Code Docs - Sandboxing)。
文件系统隔离:
- 默认写入:当前工作目录及其子目录
- 默认读取:整台计算机(除特定拒绝目录外)
- 无法修改工作目录外的文件(除非显式授权)
网络隔离:
- 仅允许访问批准的域名
- 新域名请求触发权限提示(除非启用
allowManagedDomainsOnly) - 限制适用于所有脚本、程序和子进程
OS 级执行:
- macOS:使用 Seatbelt 框架
- Linux:使用 bubblewrap
- WSL2:使用 bubblewrap(WSL1 不支持)
启用沙箱:
# 交互式启用
/sandbox
# 或在 settings.json 中配置
{
"sandbox": {
"enabled": true,
"mode": "autoAllow",
"filesystem": {
"allowWrite": ["~/.kube", "/tmp/build", "./output"]
},
"network": {
"allowedDomains": ["npmjs.org", "github.com", "registry.npmjs.org"]
}
}
}
沙箱模式:
| 模式 | 说明 |
|---|---|
autoAllow | 沙箱内命令自动允许,无需提示;无法沙箱化的命令回退到常规权限流程 |
regularPermissions | 即使沙箱化,所有命令仍需标准权限确认 |
路径前缀解析:
| 前缀 | 含义 | 示例 |
|---|---|---|
/ | 文件系统根目录绝对路径 | /tmp/build 保持 /tmp/build |
~/ | 相对于主目录 | ~/.kube 解析为 $HOME/.kube |
./ 或无前缀 | 项目设置中相对于项目根;用户设置中相对于 ~/.claude | ./output 解析为 <project-root>/output |
7.3 权限模式
| 模式 | 说明 | 适用场景 |
|---|---|---|
default | 首次使用每个工具时提示权限 | 日常开发 |
acceptEdits | 自动接受文件编辑和常见文件系统命令 | 信任编辑的场景 |
plan | 仅分析不修改或执行 | 代码评审 |
auto | ML 分类器评估每个动作的风险,自动批准低风险操作 | 需理解其判断逻辑 |
dontAsk | 未预批准的工具自动拒绝 | 锁定环境 |
bypassPermissions | 跳过权限提示(谨慎使用) | 完全受信环境 |
7.4 Hooks:自动化安全护栏
Hooks 是在 Claude Code 生命周期关键点执行的自定义命令,可用于实现安全护栏(来源:Claude Code Docs - Hooks)。
核心 Hook 事件:
PreToolUse:工具使用前执行,可拦截危险操作PostToolUse:工具使用后执行,可记录审计日志Stop:Agent 停止时执行Notification:发送通知时执行
Hook 决策机制:
| 退出码 | 行为 |
|---|---|
| 0 | 允许工具调用继续 |
| 1 | 强制显示权限提示 |
| 2 | 阻止工具调用 |
拦截危险命令的 Hook 示例:
// Hooks 格式请以官方文档为准: https://code.claude.com/docs/en/hooks
{
"hooks": {
"PreToolUse": [
{
"matcher": "Bash(rm -rf /*|DROP TABLE|DELETE FROM.*WHERE)",
"hook": "echo 'Dangerous command blocked' && exit 2"
}
]
}
}
记录审计日志的 Hook:
{
"hooks": [
{
"event": "PostToolUse",
"command": "echo \"$(date -Iseconds) $(jq -r '.tool_name' /dev/stdin)\" >> ~/.claude/audit.log"
}
]
}
7.5 设置优先级
权限规则遵循五级优先级(高到低):
- 托管设置:无法被任何其他级别覆盖
- 命令行参数:临时会话覆盖
- 本地项目设置(
.claude/settings.local.json) - 共享项目设置(
.claude/settings.json) - 用户设置(
~/.claude/settings.json)
关键规则:如果某工具在任何级别被拒绝,其他级别无法允许它。
7.6 安全最佳实践
- 从严格开始:最小权限原则,按需扩展
- 监控日志:审查沙箱违规尝试
- 环境隔离:开发/生产使用不同的沙箱规则
- 组合防护:权限规则 + 沙箱 + Hooks 多层防御
- 测试配置:验证沙箱设置不会阻塞合法工作流
- 谨慎使用 Unix Socket:
allowUnixSockets可能绕过沙箱(如/var/run/docker.sock) - 避免过宽的写入权限:不要允许写入
$PATH中的可执行目录或 shell 配置文件
8. Monitor 插件:后台任务监控
⚠️ 注意:Monitor 是 Claude Code 的插件组件,需通过插件系统启用,而非内置工具。
Monitor 让 Claude Code 能够事件驱动地响应后台进程,无需阻塞对话(来源:Claude Code Docs - Plugins Reference)。
使用场景:
- 追踪日志文件并标记错误
- 轮询 PR 或 CI 作业状态变化
- 监视目录文件变化
- 追踪任何长运行脚本的输出
工作原理:
- Claude 编写一个监视脚本
- 在后台运行该脚本
- 每行输出到达时接收通知
- 用户在对话中继续工作,Claude 在事件发生时插入响应
示例:监视构建日志
# 用户请求
"Monitor the build log and let me know if any errors appear"
# Claude 启动 Monitor 插件
# 相当于执行: tail -f build.log | grep -i error
# 当错误出现时,Claude 会主动提示
Monitor 使用与 Bash 相同的权限规则,因此为 Bash 设置的 allow 和 deny 模式同样适用。
9. 完整配置示例
9.1 前端项目配置
{
"permissions": {
"allow": [
"Bash(npm run *)",
"Bash(npm install)",
"Bash(npm ci)",
"Bash(pnpm *)",
"Bash(vite)",
"Bash(vite build)",
"Bash(tsc)",
"Bash(tsc --noEmit)",
"Bash(git status)",
"Bash(git add *)",
"Bash(git commit *)",
"Bash(git log *)",
"Bash(git diff *)",
"Bash(gh pr view *)",
"Bash(gh pr diff *)"
],
"ask": [
"Bash(git push *)",
"Bash(git merge *)",
"Bash(npm publish *)"
],
"deny": [
"Bash(curl *)",
"Bash(wget *)",
"Bash(rm -rf *)",
"Read(~/.ssh/**)",
"Read(//etc/passwd)",
"WebFetch(domain:localhost)"
]
},
"sandbox": {
"enabled": true,
"mode": "autoAllow",
"filesystem": {
"allowWrite": ["./dist", "./build", "/tmp"]
},
"network": {
"allowedDomains": ["registry.npmjs.org", "npmjs.org", "github.com", "unpkg.com", "cdn.jsdelivr.net"]
}
},
"hooks": [
{
"event": "PreToolUse",
"matcher": {
"tool": "Bash",
"pattern": "npm audit fix"
},
"command": "echo '{\"decision\": \"ask\", \"reason\": \"Audit fix may introduce breaking changes\"}' && exit 1"
}
]
}
9.2 全栈项目配置(含数据库和部署)
{
"permissions": {
"allow": [
"Bash(npm run *)",
"Bash(npx prisma *)",
"Bash(npx drizzle-kit *)",
"Bash(vercel *)",
"Bash(vercel env *)",
"Bash(vercel logs *)",
"Bash(docker ps)",
"Bash(docker compose *)",
"Bash(kubectl get pods|services|deployments *)",
"Bash(kubectl describe *)",
"Bash(kubectl logs *)",
"Bash(gh *)"
],
"ask": [
"Bash(vercel --prod)",
"Bash(docker exec *)",
"Bash(kubectl get secrets *)",
"Bash(kubectl apply *)",
"Bash(npx prisma migrate deploy)"
],
"deny": [
"Bash(kubectl delete *)",
"Bash(docker system prune *)",
"Bash(vercel remove *)"
]
},
"sandbox": {
"enabled": true,
"filesystem": {
"allowWrite": ["~/.kube", "./prisma/migrations"]
}
},
"mcpServers": {
"postgres": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-postgres", "${DATABASE_URL}"]
}
}
}
10. 参考来源
- Claude Code Docs - Tools Reference
- Claude Code Docs - Sandboxing
- Claude Code Docs - Permissions
- Claude Code Docs - MCP
- Claude Code Docs - Skills
- Claude Code Docs - Hooks
- Anthropic Engineering Blog - Claude Code Sandboxing
- MCP Server Directory (GitHub)
- Claude Code Security Review (GitHub)
- FindMCP - MCP Server Directory