安全ガイド
このページは実装とスキル(skills/apps-api/references/safety.md)に基づきます。存在しない機能やリスクを追加していません。
Sandbox はありません。検証でも実データ・実プランに影響し得ます。
APPS_APP_ID/APPS_APP_SECRET/ アクセストークンをリポジトリ・チャット・Issue・スクリーンショットに貼らない- ツールはシークレットを返さない設計。応答に出てきても保存・再投稿しない
書き込みガード
Section titled “書き込みガード”実装(write-guard)どおり、次の順で保護されます。
- 既定は読み取り専用(
APPS_MCP_ALLOW_WRITE未設定 /false) - 有効化後も
confirm: trueが必須 - 先に
dry_run: trueで method / path / body を確認 - DELETE は破壊的(戻せない前提でユーザー確認)
顧客・購入者・契約者・メール・Discord ID などはログ・コミット・共有ドキュメントに残さない。要約が必要なら個人を特定できない形にする。
Webhook
Section titled “Webhook”- 受信は 30 秒以内に 200。重複は
Apps-Webhook-Id/ body.idで判定 - 署名検証は生ボディで行う(再 stringify 禁止)
- Webhook シークレットはチャット・ログに出さない
やってはいけないこと
Section titled “やってはいけないこと”- Sandbox があるかのように案内する
- 未公開 API(決済実行・返金・解約 REST、顧客一覧検索、Webhook CRUD API など)を存在する前提で呼ぶ
- 管理画面の表示 ID を
payment_idとして使う(Webhook の通知idもpayment_idではない) /v1/apps/...パスで決済ページを叩く- 登録ページで使わない
waiting_listをtype: 0付きで送る(オブジェクトごと省略する)
信頼できるクライアントで使う
Section titled “信頼できるクライアントで使う”MCP はローカルの資格情報で本番 API にアクセスします。信頼できる MCP クライアントでのみ利用し、共有マシンや公開リポジトリにシークレットを置かないでください。