我在生产数据库上运行 AI。以下是发生的一切。

上周二凌晨 3 点,我的系统达到了每分钟 12,000 次写入。一个循环导致了系统冻结。这个 bug 只是一个简单的单行错误,但其背后的原因要严重得多。

在运行数据库迁移时,我在 Claude Code 中启用了一个跳过权限的标志(permission skip flag)。我以为我正在使用测试环境。但我错了。我配置错了 env 文件,加载的是生产环境凭据,而不是开发环境凭据。

Claude 没有请求许可。该标志告诉它无需询问。迁移操作增加了一个列,而不是删除一个列。我没有丢失任何数据,但差一点就丢了。

我的思维出了问题。我以为跳过权限只是去掉了烦人的弹窗。实际上,它去掉了人类审查命令的唯一机会。

仅仅关闭该标志是不够的。它只是增加了一个提示,而你会在凌晨 3 点疲惫不堪时直接点击跳过。

我通过在设置文件中添加一条拒绝规则(deny rule)解决了这个问题。

我为本地命令使用特定的允许规则(allow rule),为所有其他数据库命令使用拒绝规则。特定规则优先。这可以在所有生产数据库命令运行前将其拦截。

我现在使用了三层安全保障:

  • 一个包含严格允许和拒绝规则的设置文件。
  • 一个专门用于迁移的独立 git worktree,其中仅包含测试环境凭据。
  • 一个 CLAUDE.md 文件,告知 AI 在操作生产环境前必须询问。

请注意,在长对话会话中,CLAUDE.md 中的指令可能会失效。你必须在提示词(prompt)中重新申明关键规则。

我写了一篇关于我的设置和具体配置的详细拆解。

来源:https://dev.to/riversea/i-let-claude-code-run-dangerously-skip-permissions-on-my-production-db-heres-what-i-changed-4p8

可选学习社区:https://t.me/GyaanSetuAi