OpenCodeセッションを安全に共有し、リンクを解除する方法
OpenCodeの共有リンクは、特定の同僚だけに届く非公開招待ではなく、URLを入手した人なら誰でも開ける公開ページです。本記事では公開範囲、manualとdisabledの使い分け、共有前の機密情報チェック、/unshareによる解除と確認までを一連の手順で説明します。
目次

OpenCodeのセッションを同僚に送る前に、そのリンクを「一人だけに送る非公開招待」ではなく、小さな公開ページとして扱ってください。OpenCodeの公式ドキュメントでは、共有した会話はリンクを知る誰でも閲覧できると説明されています。多くのチームでは、セッション全体を確認してからmanualで共有し、協業が終わったらすぐに/unshareする方法が安全です。機密性の高いプロジェクトではdisabledを選びます。
OpenCodeの共有リンクに含まれるもの
共有されるのは、同僚に見せたい最後の回答だけではありません。OpenCode Share公式ドキュメントによると、共有時には一意の公開URLが作成され、会話履歴がOpenCodeのサーバーに同期され、次の情報がリンクから閲覧可能になります。
- 会話履歴のすべて
- すべてのメッセージと応答
- セッションのメタデータ
これは、ローカルディスク上のリポジトリ全体が自動的に公開されるという意味ではありません。ただし、ソースコード、設定、ログ、コマンド出力、ファイル内容がメッセージや応答に現れた場合、それらは共有履歴の一部です。また、標準の共有リンクは送信先の同僚のアカウントに限定されません。URLを入手した人は誰でも開けます。
共有セッションは、明示的に共有を解除するまで閲覧可能な状態が続きます。最後の数件だけを確認したり、推測しにくそうなURLをアクセス制御の代わりにしたりしないでください。
manual、auto、disabledの選び方
通常の業務では、manualとdisabledのどちらかを選びます。autoは、すべての新しい会話を人が確認する前に自動公開してもよい場合に限って使います。
| モード | 動作 | 向いている場面 | 主なリスク |
|---|---|---|---|
manual | 既定値。/shareを実行したときだけリンクを作成 | 確認済みセッションを時々共有する | 確認漏れはあり得るが、新規セッションは自動公開されない |
auto | すべての新規会話を自動共有してリンクを作成 | 意図的に公開するワークフロー | 秘密情報、コード、ログが確認前に公開される可能性がある |
disabled | 共有機能を完全に無効化 | 非公開リポジトリ、顧客データ、規制対象業務、公開リンクが不要なチーム | 標準共有リンクは使えないため、別の管理された協業手段が必要 |
判断基準は明確です。確認済みのセッションを必要なときだけ見せるならmanual、プロジェクトが機密性を持つ、公開リンクが不要、または毎回の確認を確実に行えないならdisabledです。/shareを入力する手間を省くためだけにautoを選ばないでください。
共有前にセッション全体を確認する
最初のメッセージから最後まで読み直します。公開ページには履歴全体が含まれるため、チームチャットに貼る部分だけを整えても不十分です。元のセッションのどこかに機密情報が残るなら、そのセッションは共有しません。
1. 認証情報と秘密情報
APIキー、アクセストークン、パスワード、秘密鍵、Cookie、セッショントークン、Authorizationヘッダー、データベース接続文字列、署名付きURL、.envの実値を探します。変数名や安全なダミー値は問題にならない場合がありますが、有効な値は公開できません。
認証情報が履歴に入り、削除済みだと確認できない場合は、その認証情報を失効またはローテーションし、秘密情報を含まない新しいセッションを作って、そちらを共有してください。
2. 独自コードと業務情報
モデルが読んだ、または生成したソースファイル、パッチ、設定、SQL、アーキテクチャの説明、顧客名、内部要件、未公開機能を確認します。個々の断片は無害に見えても、組み合わせるとシステム構成、業務ロジック、セキュリティ境界が分かることがあります。
3. ログとコマンド出力
ログやエラーには、ローカルパス、ユーザー名、メールアドレス、ホスト名、内部ドメイン、IPアドレス、リポジトリ名、ブランチ名、チケット番号、データベース名、リクエストパラメータが含まれがちです。tokenやpasswordだけでなく、スタックトレース、テスト結果、CIログ、git diff、curlコマンド、ターミナル出力を確認します。
4. メタデータと識別につながる文脈
OpenCodeはセッションメタデータも共有対象として明記しています。プロジェクト名、セッション名、ブランチ、ファイルパスなど、組織や内部システムを特定できる情報を確認してください。
5. 確実に除去できないなら新しいセッションを作る
公開ドキュメントは自動的なマスキングを保証していません。OpenCodeが認証情報を隠してくれると想定せず、「何が見えるか試す」ために先に共有することもしないでください。協業に必要な最小限のコード、エラー、文脈だけを新しい会話に再構成する方が、長い履歴に秘密が残っていないと証明するより確実です。
manualモードで安全に共有する手順
manualは既定モードであり、「確認してから公開する」運用に最も向いています。
手順1:最終的なshare設定を確認する
OpenCodeは複数の場所の設定をマージし、同じキーが競合すると後から読み込まれた値が優先されます。グローバル設定は通常~/.config/opencode/opencode.json、プロジェクト設定はリポジトリルートのopencode.jsonです。次を実行します。
opencode debug config
解決後の設定でshareが本当にmanualであり、別の設定からautoになっていないことを確認します。配置場所と優先順位はOpenCode Config公式ドキュメントを参照してください。
手動共有を明示するには、適切なopencode.jsonに次を追加します。
{
"$schema": "https://opencode.ai/config.json",
"share": "manual"
}
手順2:プライバシーチェックを完了する
上記の項目を履歴全体に適用します。公開できない認証情報、独自コード、機密ログ、識別情報が一つでも残るなら中止します。協業を続ける必要があれば、最小限の新しいセッションを作ります。
手順3:確認済みのセッションで/shareを実行する
/share
公式ドキュメントでは、一意のURLが作成され、クリップボードにコピーされると説明されています。すぐに転送せず、まず公開ページとして確認します。
手順4:受信者と同じ視点でリンクを見る
ログアウトしたブラウザまたはプライベートウィンドウでURLを開き、最初から最後まで読みます。初期のメッセージや長いログも含め、リンクを入手した誰に見られてもよい内容だけであることを確認します。
これは公開前の確認であり、新しい権限層ではありません。プライベートウィンドウで開いても、標準リンクが非公開になるわけではありません。
手順5:管理された経路で送り、解除時点を決める
必要なチームチャネルだけにURLを送り、再転送しないよう伝えます。ただし、その依頼は誤拡散を減らすだけで、リンクを技術的に受信者へ固定するものではありません。バグ修正時、レビュー終了時、または指定時間の終了時など、共有時点で解除条件を決めてください。
機密プロジェクトで共有を完全に無効化する
顧客データ、本番認証情報、独自コードを扱う、または公開セッションリンクが不要なら、全員が毎回正しく確認することに頼るよりdisabledの方が安全です。
プロジェクトルートのopencode.jsonに追加し、Gitへコミットします。
{
"$schema": "https://opencode.ai/config.json",
"share": "disabled"
}
公式Shareドキュメントは、チームで適用する方法としてプロジェクト設定を推奨しています。設定はマージされるため、変更後もopencode debug configで最終値を確認してください。特にinline設定や管理者設定がプロジェクト値を上書きする場合があります。
一般ユーザーが変更できない組織ポリシーには、管理者がmanaged settingsを使います。現在のConfigドキュメントでは、macOSは/Library/Application Support/opencode/、Linuxは/etc/opencode/、Windowsは%ProgramData%\opencodeです。managed settingsはユーザー設定やプロジェクト設定より優先されます。Enterprise環境では、SSO認証ユーザーだけに制限したり、共有機能をセルフホストしたりすることもできます。
既存の共有リンクを解除する方法
解除は明示的な後処理です。ターミナルを閉じる、URLを送ったチャットメッセージを削除する、クリップボードを消すだけでは、公開済みセッションは解除されません。
手順1:元のセッションで/unshareを実行する
/unshare
OpenCodeの説明では、このコマンドは公開アクセスと共有リンクを削除し、共有会話に関連するデータを削除します。
手順2:古いURLを外部から確認する
元のURLを保持し、ログアウトしたウィンドウまたは別のブラウザで再度開きます。成功の判断は、コマンドがエラーなく終わったように見えることではなく、古いリンクが会話を表示しなくなることです。まだ開ける場合は、正しいセッションを解除したか、クライアントの状態を確認します。
手順3:確認できなければリンクは公開中と扱う
現在の公開Shareページは、元の会話で/unshareする方法を示しており、別の公開リンク管理ダッシュボードは記載していません。元のセッションを開けない、コマンドが使えない、または古いURLが内容を表示する場合は、解除済みと報告しないでください。外部から非表示を確認できるまで、URLは公開中として扱い、OpenCode管理者またはサポートに連絡します。
/unshareでも取り戻せないもの
/unshareは、OpenCodeが古いURLで共有会話を提供し続けるのを止めます。しかし、受信者がすでに見た情報、保存したスクリーンショット、コピーしたコード、ダウンロードしたログを取り戻すことはできません。
公式ページは共有関連データの削除を説明していますが、第三者キャッシュ、ブラウザのコピー、受信者が作った保存物の削除までは保証していません。解除は必要な後処理であり、共有前チェックの代わりではありません。有効な認証情報が露出した場合は、/unshareに加えてその認証情報も失効またはローテーションしてください。
よくある質問
ローカルリポジトリ全体が公開されますか
ドキュメントが挙げるのは会話履歴、メッセージ、応答、セッションメタデータで、すべてのローカルファイルを自動公開するとは書かれていません。ただし、会話に入ったコード、ファイル内容、パッチ、ログは共有内容として扱います。
一人の同僚だけに許可できますか
標準Shareは、URLを持つ人なら誰でもアクセスできる公開リンクとして説明されており、メールアドレス単位の許可リストではありません。本人確認が必要な組織は、SSO限定やセルフホストなどのEnterprise向け選択肢を検討してください。
/shareしていないのにリンクができたのはなぜですか
解決後のshareがautoになっていないか確認します。opencode debug configを実行し、グローバル、プロジェクト、inline、managedのどの設定が最終値になったかを調べます。
/shareが使えない場合はどうしますか
最終値がdisabledか、managed policyで固定されていないか確認します。優先順位の低いファイルでチームポリシーを回避せず、管理者に許可された協業方法を確認してください。
送信前の最終チェック
送信する前に、次を確認します。
- 実効モードが
manual、またはプロジェクトが意図的にdisabledである - 最初のメッセージから履歴全体を確認した
- 有効な認証情報、内部URL、独自コード、顧客データ、機密ログが残っていない
- ログアウトしたウィンドウで公開ページを確認した
- 誰に、どの経路で送り、いつ解除するか決めた
- 協業終了後に元のセッションで
/unshareし、古いURLを再確認する
セッション共有をチャットの添付ではなく公開と考えれば、リンクを手放す前に重要なプライバシー判断をしやすくなります。