AI工具使用从专家到小白
文章目录ClaudeBash 危险命令防护配置作用域项目级 vs 全局级方法 A全局配置推荐所有项目生效文件分布步骤 1将检测脚本放到全局目录步骤 2在 ~/.claude/settings.json 中注册 Hook步骤 3验证方法 B当前项目配置已有文件分布步骤 1.claude/settings.local.json — 注册 Hook步骤 2check-dangerous-bash.py — 检测逻辑步骤 3Hook 交互协议工作流程拦截的危险模式1. cat — 直接覆盖写入文件2. rm -r / rm -rf — 递归强制删除3. dd if — 磁盘/文件原始读写4. — Shell 覆盖重定向使用说明被拦截时如何处理临时禁用修改检测规则ClaudeBash 危险命令防护配置通过 Claude Code 的PreToolUseHook 机制在每次执行 Bash 命令前自动检测危险模式强制弹出权限确认提示防止意外覆盖或删除文件。作用域项目级 vs 全局级Claude Code 支持三个层级的配置文件优先级从低到高层级文件路径Git适用场景全局~/.claude/settings.jsonN/A所有项目生效个人偏好项目.claude/settings.json提交团队共享的 hook、权限项目本地.claude/settings.local.jsongitignore个人项目级覆盖本配置已同时部署到全局和当前项目对所有项目生效。方法 A全局配置推荐所有项目生效文件分布文件作用~/.claude/settings.json全局 Hook 注册~/.claude/hooks/check-dangerous-bash.py全局检测脚本步骤 1将检测脚本放到全局目录mkdir-p~/.claude/hooks将check-dangerous-bash.py复制到~/.claude/hooks/。步骤 2在~/.claude/settings.json中注册 Hook在已有的全局配置中新增hooks字段与其他字段平级{hooks:{PreToolUse:[{matcher:Bash,hooks:[{type:command,command:python \$HOME/.claude/hooks/check-dangerous-bash.py\,timeout:5,statusMessage:Checking command safety...}]}]}}路径区别全局配置使用$HOME/.claude/hooks/...不能用$CLAUDE_PROJECT_DIR那是项目根目录。步骤 3验证在新终端中打开任意项目执行cat test.txt——应弹出权限确认提示。然后删除测试文件即可验证全局生效。方法 B当前项目配置已有文件分布文件作用.claude/settings.local.json当前项目 Hook 注册.claude/hooks/check-dangerous-bash.py当前项目检测脚本步骤 1.claude/settings.local.json— 注册 Hook{hooks:{PreToolUse:[{matcher:Bash,hooks:[{type:command,command:python \$CLAUDE_PROJECT_DIR/.claude/hooks/check-dangerous-bash.py\,timeout:5,statusMessage:Checking command safety...}]}]}}字段说明层级字段值说明根hooks{}所有 hook 的容器→PreToolUse[]在工具执行之前触发可拦截→ →matcherBash只匹配Bash工具调用→ → →typecommand执行 Shell 命令另有prompt/agent/http类型→ → →commandpython ...调用 Python 检测脚本$CLAUDE_PROJECT_DIR为项目根目录→ → →timeout5超时 5 秒防止脚本卡死阻塞→ → →statusMessageChecking...执行时 spinner 旁显示的提示文字Hook 事件类型选择事件时机能否拦截PreToolUse✅工具执行前可拦截本次选用PostToolUse工具执行成功后仅通知PostToolUseFailure工具执行失败后仅通知Hook 执行方式选择type原理适用场景command✅执行 Shell/Python 脚本规则明确速度快零成本本次选用prompt调用 LLM 判断需要语义理解如这个命令是否危险有 API 费用agent启动子 Agent需要多步骤验证httpPOST 到外部服务企业级集中管控步骤 2check-dangerous-bash.py— 检测逻辑 PreToolUse hook: check Bash commands for destructive patterns. Reads tool call JSON from stdin, outputs hook result JSON to stdout. Blocked patterns: - cat file (bypasses Write tools read first protection) - rm -r / rm -rf (irreversible delete) - dd if... (disk write) - file (redirect overwrite, not append ) importsysimportjsonimportredefmain():# 1. 解析 stdin 中的 JSON提取 Bash 命令字符串try:datajson.load(sys.stdin)exceptjson.JSONDecodeError:print({})# 解析失败 → 放行returncmddata.get(tool_input,{}).get(command,)ifnotcmd:print({})# 空命令 → 放行return# 2. 按顺序匹配危险模式命中即停不继续检查# cat file — 绕过 Write 工具保护ifre.search(r\bcat\s,cmd):warn(cat file — overwrites without confirmation, bypasses Write tool)# rm -r / rm -rf — 不可逆删除elifre.search(r\brm\s-r,cmd):warn(rm -r — irreversible delete)# dd if — 块设备写入elifre.search(r\bdd\sif,cmd):warn(dd — can destroy disks)# 覆盖重定向排除 追加、21 合并elifnotincmdand21notincmdand2notincmd \andre.search(r(?!)(?!)\s*\S,cmd):warn( overwrite redirect — bypasses Write tool)# 3. 安全命令 → 输出空 JSON放行else:print({})defwarn(reason):输出拦截指令 JSON强制弹出权限提示print(json.dumps({continue:True,# 不阻断流程改为弹窗systemMessage:fWARNING:{reason}. Permission required.,hookSpecificOutput:{hookEventName:PreToolUse,permissionDecision:ask,# allow | deny | askpermissionDecisionReason:reason}}))if__name____main__:main()脚本关键设计决策决策选择原因拦截方式permissionDecision: ask弹确认框而非硬阻断真正需要的操作可以放行匹配顺序if/elif链命中即停避免一条命令触发多条警告排除跳过追加重定向追加到文件末尾不覆盖内容安全排除21跳过 stderr 合并只是合并输出流不写入文件排除2跳过 stdout→stderr同上解析失败输出{}放行宁可漏过也不误阻断fail-open脚本语言Python比 bash 正则更可靠JSON 处理更安全步骤 3Hook 交互协议stdin 输入Claude Code → 脚本{tool_name:Bash,tool_input:{command:cat test.txt,description:...,timeout:120000}}stdout 输出 — 安全命令脚本 → Claude Code{}输出空 JSON 对象 放行不做任何干预。stdout 输出 — 危险命令脚本 → Claude Code{continue:true,systemMessage:WARNING: cat file — overwrites without confirmation, bypasses Write tool. Permission required.,hookSpecificOutput:{hookEventName:PreToolUse,permissionDecision:ask,permissionDecisionReason:cat file — overwrites without confirmation, bypasses Write tool}}字段作用continue: true不中断会话流程systemMessage在 UI 中显示的警告文字permissionDecision: ask强制弹出权限确认对话框permissionDecisionReason对话框中展示的拦截原因工作流程Bash 命令 → PreToolUse Hook → check-dangerous-bash.py │ ┌───────┴───────┐ │ 检测危险模式 │ └───────┬───────┘ 安全 │ 危险 {} │ { permissionDecision: ask } │ │ │ 直接执行 │ 弹出权限确认 │ ┌────┴────┐ │ 允许 拒绝 │ 执行 不执行拦截的危险模式1.cat — 直接覆盖写入文件catoutput.txtcat/path/to/file命令作用cat默认将标准输入的内容输出到终端。加上重定向后会将终端输入的内容直接覆盖写入目标文件原有内容全部丢失。为何危险Claude Code 的Write/Edit工具有必须先 Read 才能覆盖的保护机制但cat 是 Bash 原生命令绕过了这道保护可能静默覆盖重要文件。这正是本配置要解决的核心问题。2.rm -r/rm -rf— 递归强制删除rm-rdirectory/# 递归删除目录及其内容rm-rfdirectory/# 递归删除强制模式不提示确认rm-rfnode_modules/# 常见场景清理依赖目录命令作用rmremove删除文件或目录-rrecursive递归删除目录及其所有子目录和文件-fforce强制删除忽略不存在的文件不弹出确认提示为何危险一旦执行不可逆不经过回收站-f参数会让命令静默执行不提示极易误删整个项目目录。3.dd if— 磁盘/文件原始读写ddif/dev/zeroofdisk.imgbs1Mcount100# 创建镜像文件ddifbackup.isoof/dev/sdb# 写入U盘/磁盘命令作用dddata duplicator底层数据复制工具ifinput file指定输入源ofoutput file指定输出目标bsblock size每次读写的块大小为何危险dd直接操作块设备of可以指向磁盘分区如/dev/sda错误的of参数会彻底摧毁磁盘数据连文件系统结构都被覆盖无法通过常规手段恢复。4.— Shell 覆盖重定向echohellofile.txt# 将 echo 输出覆盖写入文件some-commandresult.log# 将命令输出覆盖写入文件data.json# 清空文件内容Bash 允许省略命令命令作用是 Shell 的输出重定向操作符将左侧命令的标准输出覆盖写入右侧文件。如果文件已存在原有内容先被清空再写入新内容。为何危险与cat 同理绕过了Write/Edit工具的保护。 important_file会在瞬间清空文件且不会经过确认。区分是追加append重定向不覆盖原有内容因此不被拦截。使用说明被拦截时如何处理当命令被拦截时Claude Code 会弹出权限确认提示显示拦截原因。你有三个选择Allow允许确认安全放行执行Deny拒绝阻止执行Ask询问回到对话手动确认或用其他方式完成临时禁用如需大量执行文件操作可在对话中告知暂时关闭 hook我将通过修改配置临时禁用检测。修改检测规则编辑.claude/hooks/check-dangerous-bash.py修改main()函数中的正则模式即可增删拦截规则。修改后下次 Bash 调用即刻生效无需重启。

相关新闻

OpenCV-Python实战(12)——一文详解AR增强现实

OpenCV-Python实战(12)——一文详解AR增强现实

OpenCV-Python实战(12)——一文详解AR增强现实 0. 前言 1. 增强现实简介 2. 基于无标记的增强现实 2.1 特征检测 2.2 特征匹配 2.3 利用特征匹配和单应性计算以查找对象 3. 基于标记的增强现实 3.1 创建标记和字典 3.2 检测标记 3.3 相机校准 3.4 相机姿态估计 3.5 增强现实初…

2026/10/12 22:25:16 阅读更多 →
国产化落地避坑 · 干货向|Oracle 迁金仓 KES,我把外连接消除排在隐性陷阱第一位

国产化落地避坑 · 干货向|Oracle 迁金仓 KES,我把外连接消除排在隐性陷阱第一位

从 Oracle 迁到金仓 KES 这几年,我攒了一份隐性陷阱清单。所谓隐性,是它们不报错。语法过了,程序跑了,数据也出来了,只是结果悄悄和 Oracle 不一样。这类坑比报错的坑难缠十倍,因为报错会拦住你&#xff0c…

2026/10/13 9:11:25 阅读更多 →
OpenCV-Python实战(13)——OpenCV与机器学习的碰撞

OpenCV-Python实战(13)——OpenCV与机器学习的碰撞

OpenCV-Python实战(13)——OpenCV与机器学习的碰撞 0. 前言 1. 机器学习简介 1.1 监督学习 1.2 无监督学习 1.3 半监督学习 2. K均值 (K-Means) 聚类 2.1 K-Means 聚类示例 3. K最近邻 3.1 K最近邻示例 4. 支持向量机 4.1 支持向量机示例 小结 系列链接 0. 前言 机器学习是人…

2026/9/30 15:27:21 阅读更多 →

最新新闻

linux-dash 全局 CSS 层解析:main、plugins-container、tables 如何撑起一套极简监控面板样式

linux-dash 全局 CSS 层解析:main、plugins-container、tables 如何撑起一套极简监控面板样式

运维观测指标监控监控大盘 【免费下载链接】linux-dash A beautiful web dashboard for Linux 项目地址: https://gitcode.com/gh_mirrors/li/linux-dash 点击查看 免费下载 本文以 src/css/README.md 中描述的"全局基础样式文件"(Global CSS…

2026/10/14 2:23:24 阅读更多 →
10.5 GHz 相控阵雷达开源了:四块板与 10 层混压 PCB 拆解

10.5 GHz 相控阵雷达开源了:四块板与 10 层混压 PCB 拆解

10.5 GHz 相控阵雷达开源了:四块板与 10 层混压 PCB 拆解 【免费下载链接】PLFM_RADAR Open-source, low-cost 10.5 GHz PLFM phased array RADAR system 项目地址: https://gitcode.com/GitHub_Trending/pl/PLFM_RADAR 如果告诉你,一套 16 通道 …

2026/10/14 2:23:24 阅读更多 →
Matlab findpeaks峰值检测:参数调优与实战避坑指南

Matlab findpeaks峰值检测:参数调优与实战避坑指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 2:23:24 阅读更多 →
Java小白如何三天速通redis?

Java小白如何三天速通redis?

大家都知道Redis的业务范围是非常广的,但是对于刚入行的小伙伴来说可能也就知道个缓存跟分布式锁。因为Redis的很多功能在一些小企业里,根本是用不到的,得等到并发量到了一定的程度,系统扛不住了,才会用到Redis那些高级…

2026/10/14 2:23:24 阅读更多 →
Viper 回连过滤(Handler Firewall):按 IP 精准管控监听回连的实战指南

Viper 回连过滤(Handler Firewall):按 IP 精准管控监听回连的实战指南

文档教程网络安全 【免费下载链接】Viper Adversary simulation and Red teaming platform with AI 项目地址: https://gitcode.com/gh_mirrors/vip/Viper 点击查看 免费下载 Viper 的**回连过滤(Handler Firewall)**是内置在监听器&#xf…

2026/10/14 2:23:24 阅读更多 →
A*算法在路径规划中的原理与实践优化

A*算法在路径规划中的原理与实践优化

1. 路径规划中的A*算法初探第一次接触A算法是在开发仓库机器人导航系统时。当时我们尝试了Dijkstra、深度优先搜索等各种路径规划方法,要么计算时间太长,要么找到的路径不够优化。直到一位同事推荐了A算法,测试效果令人惊艳——在100x100的网…

2026/10/14 2:22:24 阅读更多 →

日新闻

AnyPS5通用适配层设计:兼容性与性能的工程取舍

AnyPS5通用适配层设计:兼容性与性能的工程取舍

1. 从"AnyPS5"这个名字说起:它到底想解决什么问题第一次看到"AnyPS5"这个标题,我脑子里冒出来的第一个念头是:这大概率是一个围绕"跨平台运行"或者"通用适配"做文章的项目。名字里的"Any"…

2026/10/14 0:00:41 阅读更多 →
Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

1. 项目概述:Flutter跨平台二手交易应用开发作为一名长期从事移动应用开发的工程师,我最近完成了一个基于Flutter框架的二手物品交易平台项目。这个项目最吸引我的地方在于它完美结合了Flutter的跨平台优势与HarmonyOS的生态特性,实现了"…

2026/10/14 0:00:41 阅读更多 →
DFS算法解决飞机降落调度问题实战

DFS算法解决飞机降落调度问题实战

1. 项目背景与核心思路飞机降落问题是一个经典的调度优化场景,也是算法竞赛和面试中的高频题目。这个题目要求我们合理安排多架飞机的降落顺序和时间,确保所有飞机都能安全着陆而不发生冲突。在实际航空管制中,这类问题直接关系到飞行安全和机…

2026/10/14 0:00:41 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/13 2:54:56 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/13 16:22:04 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/13 1:58:08 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 22:01:27 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 14:57:39 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 18:11:17 阅读更多 →