convex-deploy-guard について
convex-deploy-guard は、デプロイ関連の操作前に Convex の対象デプロイを特定するスキルです。本番変更、読み取り専用セッション、MCP アクセスについて、個別の同意と安全ルールを定めます。
主な機能
- 01デプロイ先の特定と事前通知
- 02本番変更ごとの新たな明示的同意
- 03MCP の読み取りと変更アクセスの分離
- 04読み取り専用セッション制約の順守
- 05対象が不明な場合の操作停止
活用シーン
- 01デプロイ前の対象確認
- 02変更権限を有効にしない本番監査
- 03誤ったデプロイ先への変更の防止
- 04変更禁止セッションへの対応
MCP 対応
公式 Convex MCP は、既定で非本番デプロイに限定して起動するよう案内します。本番の読み取り専用アクセスと、本番環境を変更できるツールを区別します。
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ convex/ agent-skills --skill convex-deploy-guardインストール後、Claude Code で/convex-deploy-guardを入力して読み込まれたか確認します。
詳細
デプロイ先ガード
デプロイ先は相互に置き換えられるものではなく、インシデントの多くは誤ったデプロイ先を対象にしたコマンドから始まります。すべての Convex プロジェクトには複数のデプロイ先があります(個人用 dev、preview、prod — 多くの場合、1 台のマシン上に複数のプロジェクトがあります)。このガードは常に守るべき規律です。対象を特定し、告知してから実行します。そして prod は、操作ごと、セッションごとに同意を得る必要があります。
ワークフロー
- 実行前に特定します。.env.local の
CONVEX_DEPLOYMENT、convex.json、およびCONVEX_DEPLOY_KEYが設定されているかを確認するか、公式 Convex MCP のstatusツールを呼び出します。対象を local-anonymous | dev | preview | prod に分類します。2 つの情報源に食い違いがある場合は、先に解決してください。 - デプロイに影響するコマンドを実行する前に、1 行で告知します。
target: dev (joyful-capybara-123, personal dev)。対象を特定するのと同時にコマンドを実行してはいけません。先に告知してください。 - prod には、その都度、新たな明示的な同意が必要です。
npx convex deploy(prod に解決される場合)、npx convex run --prod、prod でのenv set、prod でのスナップショットのimport/export、または prod へのアクセス権を持つ MCP の起動の前に、どのデプロイ先で何が変更されるのかを正確に伝え、このセッション内で明示的な同意を得てください。以前に得た同意や、別の対象に対する同意は適用されません。 - MCP の安全なデフォルト設定:公式 MCP は非 prod にスコープして起動します(
--deployment dev)。2 つの prod フラグはリスクレベルが異なるため、分けて扱います。prod の読み取り専用監査(advisor/insights によるデータ/ログ/insights の読み取り)では--cautiously-allow-production-pii(読み取りツール)のみを渡します。--dangerously-enable-production-deployments(prod を変更するツールを有効にする)は、ユーザーがこのセッションで prod の変更を明示的に依頼しない限り、無効のままにします。デフォルトで両方を併用してはいけません。「prod を見る」ことで、暗黙に「prod を変更する」権限まで与えてはいけません。 - 読み取り専用セッションモード:ユーザーが「読み取り専用」/「何も変更しないで」と言った場合は、セッションの残りの間、絶対にその指示に従います。デプロイ、env の設定/削除、
runによる変更、インポートを行いません。MCP は--disable-tools run,envSet,envRemoveを付けて起動します。 - 誤ったデプロイ先の診断:デプロイしても「何も変わらなかった」場合、さらに強引に再デプロイしてはいけません。手順 1 を再実行してください。ほぼ間違いなく、確認していたものとは別のデプロイ先にデプロイされています。
- 曖昧な場合は停止します。コマンドがどのデプロイ先を対象にするのか判断できない場合は、(status ツールで)確認してください。推測してはいけません。
ルール
- デプロイに影響するすべてのコマンドの前に、対象を分類して告知します。特定と実行は別々の手順です。
- prod の同意は操作ごと、対象ごと、セッションごとに必要です。どこで何が変更されるのかを伝え、新たに明示的な同意を得てください。
- リスクに応じて、prod の MCP フラグを分けて使います。監査には --cautiously-allow-production-pii(読み取り専用)、prod の変更をユーザーが明示的に依頼した場合に限り --dangerously-enable-production-deployments(変更可能)を使います。どちらもユーザー自身の発言による許可が必要です。MCP は常に、非 prod のデプロイ先セレクターをデフォルトとして起動します。
- 読み取り専用モードは、一度要求されたらセッション中は絶対です。「無害な」変更も含め、変更は一切行いません。
- デプロイしても何も起こらなかったように見える場合、変更されたのは誤ったデプロイ先です。対象を診断し、再実行してはいけません。
- このガードは他の手順にも適用されます。ship、env、migrate、seed はそれぞれ手順 0 としてこのガードを実行します。このガード自体はデプロイツールではありません。
コメント
Markdown 対応