如何配置Claude Code适配Hatch Python环境管理器,规避不可信Shell模式提示
解决Hatch虚拟环境与Claude Code安全提示的最优方案
我之前也遇到过类似的Claude Code和Hatch配合的痛点——既想保留Hatch每个项目独立虚拟环境的优势,又不想每次执行工具都触发source命令的安全提示。这里有几个实用的解决方案,帮你彻底解决这个问题:
1. 全局配置Claude Code自动使用hatch run前缀
核心思路是避免用source激活环境,直接让Claude Code用Hatch的run命令来执行所有工具。你只需要在项目根目录的.claude/settings.json里添加几条命令规则,就能让Claude Code自动给指定工具加上hatch run前缀:
{ "commandRules": [ { "match": "^ruff.*", "replace": "hatch run $0" }, { "match": "^pyright.*", "replace": "hatch run $0" }, { "match": "^pytest.*", "replace": "hatch run $0" }, // 如果需要支持更多工具,比如python、pip,也可以添加对应规则 { "match": "^python.*", "replace": "hatch run $0" } ] }
为什么这能解决问题?
hatch run会自动识别当前项目的虚拟环境,直接在环境内部执行命令,完全不需要用source激活,也就不会触发Claude Code对动态Shell代码的安全检查。- 规则里的
$0会匹配整个原命令,比如原命令是ruff check --fix file.py,替换后会变成hatch run ruff check --fix file.py,完全保留原命令的参数。 - 只需要配置一次,所有匹配的工具都会自动适配,不用每个工具单独写Bash规则,维护成本极低。
2. (可选)让Hatch把虚拟环境存在项目目录下
虽然这一步不直接解决安全提示问题,但能让你更直观地管理虚拟环境。默认情况下Hatch把环境存在系统目录,你可以在项目根目录的hatch.toml里添加配置,让虚拟环境存在项目内的.venv目录:
[dirs.env] virtual = ".venv"
这样你能直接看到项目的虚拟环境,也方便其他工具(比如VS Code)自动识别,和Claude Code的配置配合使用体验更好。
3. 多环境场景的适配
如果你的项目有多个Hatch环境(比如dev、test),可以修改规则指定具体环境:
{ "match": "^pytest.*", "replace": "hatch run --env test $0" }
这样执行pytest时会自动使用test环境,不需要手动指定参数。
注意事项
- 确保你的系统PATH里已经包含Hatch的可执行文件,Claude Code能正常找到
hatch命令。 - 如果项目还没初始化Hatch环境,
hatch run会自动创建默认环境,不用手动执行hatch env create。
内容的提问来源于stack exchange,提问作者David Maze
相关产品推荐
相关产品推荐

