セキュリティとプライバシー:ローカルファイルアクセス、APIマスキング、公式インターフェース
ローカルファースト原則
opencode-mystatusは「読み取り専用ローカルファイル + 公式API直接クエリ」の原則に従い、すべての機密操作はユーザーのマシン上で完了し、第三者サーバーを経由しません。
核心概念
プラグインのセキュリティデザインは3つの核心原則に基づいています:
- 読み取り専用原則:ローカル認証ファイルのみを読み取り、書き込みや修正を行わない
- 公式インターフェース:各プラットフォームの公式APIのみを呼び出し、第三者サービスを使用しない
- データマスキング:表示時に機密情報(APIキーなど)を自動的に隠す
ローカルファイルアクセス(読み取り専用)
プラグインが読み取るファイル
プラグインは2つのローカル設定ファイルのみを読み取り、すべて読み取り専用です:
| ファイルパス | 用途 | ソースコードの場所 |
|---|---|---|
~/.local/share/opencode/auth.json | OpenCode公式認証ストレージ | mystatus.ts:35 |
~/.config/opencode/antigravity-accounts.json | Antigravityプラグインアカウントストレージ | google.ts |
ファイルを修正しない
ソースコードでは readFile 関数のみを使用してファイルを読み取り、writeFile やその他の修正操作は一切行いません。これにより、プラグインが誤って設定を上書きすることがなくなります。
APIキーの自動マスキング
マスキングとは?
マスキング(Masking)とは、機密情報を表示する際、一部の文字のみを表示し、重要部分を隠すことです。
例:Zhipu AI APIキーが以下の場合:
sk-9c89abc1234567890abcdefAQVMマスキング後の表示:
sk-9c8****fAQVMマスキングルール
プラグインは maskString 関数を使用してすべての機密情報を処理します:
- デフォルトで前4桁と後4桁を表示
- 中間部分を
****に置換 - 文字列が短すぎる(≤8桁)場合、そのまま返す
公式インターフェース呼び出し
プラグインが呼び出すAPI
プラグインは各プラットフォームの公式APIのみを呼び出し、第三者サーバーを経由しません:
| プラットフォーム | APIエンドポイント | 用途 |
|---|---|---|
| OpenAI | https://chatgpt.com/backend-api/wham/usage | クォータクエリ |
| Zhipu AI | https://bigmodel.cn/api/monitor/usage/quota/limit | Tokenクォータクエリ |
| GitHub Copilot | https://api.github.com/copilot_internal/user | クォータクエリ |
公式APIのセキュリティ
これらのAPIエンドポイントはすべて各プラットフォームの公式インターフェースで、HTTPS暗号化送信を使用します。プラグインは「クライアント」としてリクエストを送信するだけで、データの保存や転送を行いません。
セキュリティとプライバシーに関するQ&A
プラグインは私のAPIキーを盗むのですか?
盗みません。プラグインはAPIキーを使用して公式APIにリクエストを送信するだけで、第三者サーバーに保存や転送を行いません。すべてのコードはオープンソースで、監査できます。
なぜマスキングされたAPIキーを表示するのですか?
プライバシー保護のためです。クエリ結果のスクリーンショットを共有しても、完全なAPIキーは漏洩しません。マスキング後は前後4桁のみが表示され、中間の重要部分は隠されています。
プラグインは私の設定ファイルを修正しますか?
修正しません。プラグインは readFile のみを使用してファイルを読み取り、書き込み操作を一切行いません。設定ファイルの形式が間違っている場合、プラグインはエラーメッセージを返し、修正や上書きを試みません。
まとめ
- 読み取り専用原則:プラグインはローカル認証ファイルのみを読み取り、一切修正を行わない
- APIマスキング:表示時にAPIキーの重要部分を自動的に隠す
- 公式インターフェース:各プラットフォームの公式APIのみを呼び出し、第三者サービスを使用しない
- オープンソース透明性:すべてのコードはオープンソースで、セキュリティメカニズムを監査できます
付録:ソースコード参照
クリックしてソースコードの場所を展開
| 機能 | ファイルパス | 行番号 |
|---|---|---|
| 認証ファイル読み取り | plugin/mystatus.ts | 38-40 |
| APIマスキング関数 | plugin/lib/utils.ts | 130-135 |