セキュリティ設計
すべての呼び出しで守られる境界
StudioCat はモデルにあなたのマシン上で操作をさせます。モデルは間違えることも、混乱することも、読んだ内容に誘導されることもある――そう想定しているので、境界はモデルへのお願いではなく、StudioCat が呼び出しのたびに強制します。このページでは現行バージョンの設計を説明します。
脅威モデル
- 対象:モデルが誤ったツールを呼ぶ、誤ったパスやプロジェクトを指定する、書き込みを繰り返す、ファイル・Web ページ・ツール出力に仕込まれた指示に従う。
- 対象:Mac がネットワークにさらされること、認証情報がログ・引数・診断情報から漏れること。
- 対象外:すでにあなたの macOS アカウントや ChatGPT アカウントを掌握している人。ChatGPT アカウントを使える人は、あなたが許可したプロジェクトも使えます。多要素認証で保護してください。
通信:外向きのみ
StudioCat は OpenAI のトンネルクライアントを内蔵しています。HTTPS で OpenAI にロングポーリングしてツール呼び出しを受け取り、結果を送り返します。ローカルサーバも、待ち受けポートも、ポート転送もありません。診断機能が待ち受けを開くこともありません。呼び出しが届くのは、あなたが自分のトンネル用に ChatGPT に追加した MCP サーバからだけです。
すべての呼び出しで認可
- ひとつのポリシーストアが、ツール → コマンド → パスの順にすべての呼び出しを判定します。ツールの注釈はヒントにすぎず、権限にはなりません。
- パスは正規化(シンボリックリンク、
..)してから確認します。別名でルールを回避することはできず、拒否ルールが優先されます。 - 有効なのは、アプリで許可したプロジェクトだけです。権限はアプリでのあなたの操作から生まれ、モデルやモデルが送ってくるパスから生まれることはありません。
- ターミナルとコミットはどのプロジェクトでも既定でオフで、自動でオンになることはありません。
- 入力は厳密に検証します。未知のフィールドや誤った型は拒否し、別の呼び出しに無理やり変換することはしません。
- 会話はそれぞれのプロジェクトに紐付くので、ある会話が別のプロジェクトでこっそり操作することはできません。
確認
危険なパターンに一致するコマンドは、ポリシーが許可したあと、実行する前に Mac 上で確認を求めます。拒否またはタイムアウトは何も起きなかったことを意味し、モデルにもそう伝えます。確認によって境界が広がることはありません。ポリシーが拒否した呼び出しは、確認なしで拒否されます。コマンドのリストは操作ミスを防ぐ補助であって境界ではありません。境界は、そのプロジェクトでターミナルが許可されているかどうかです。
変更と復元
- パッチはプロジェクトごとにひとまとまりで適用されます。一部が失敗すると、完了した部分は補償され、失敗は正直に報告されます。
- すべての編集は「差分レビュー」で確認して元に戻せます。古いカードは新しい作業を上書きせず、取り消しを拒否します。
- チェックポイントは隠し ref と一時インデックスを使います。ブランチ、HEAD、インデックス、stash には触れません。
- コマンドはプロセスグループ単位で停止するので、キャンセルしたコマンドの子プロセスが残ることはありません。
正直な結果
ツールのエラーは安定したコード(not_authorized、user_denied、競合など)とともに返ります。すでに実行された可能性がある呼び出しがタイムアウトした場合、モデルが受け取るのは outcome_unknown と、再試行の前に状態を確認するよう促すアドバイスです。誤った「何も起きなかった」ではありません。大きすぎる結果ははっきりと切り詰められ、黙って捨てられることはありません。
認証情報とデータ
- トンネルの認証情報は macOS のキーチェーン(またはあなたが設定した環境変数)にだけ保存されます。引数、ログ、状態ファイル、診断出力に現れることはありません。
- StudioCat がリポジトリをアップロードすることはありません。モデルがツール呼び出しで読んだ内容は ChatGPT の会話の一部となり、OpenAI の規約に従って扱われます。
- ローカルの監査ログには、すべての許可と拒否の判定が記録されます。私たちに送られるものはありません。将来のバージョンでオプトインをお願いしない限り、テレメトリもありません。
限界
- ポリシーは OS のサンドボックスではありません。ターミナルを有効にしたプロジェクトでは、あなたのユーザアカウントで実行できるものは何でも実行できます。自分でもコマンドを実行するようなプロジェクトでだけ有効にしてください。
- チェックポイントと取り消しはバックアップではなく、git が無視するファイルは対象外です。
- Mac がクラッシュした場合、パッチの取り消しはアトミックではありません。
- StudioCat は現在クローズドソースです。それが変わるまでは、署名・公証済みのビルドとこの資料が、信頼していただくための手段です。
問題の報告
セキュリティ上の問題を見つけたら、件名に「Security report」と書いて [email protected] までメールしてください。API キーや非公開のコードは含めないでください。