0. 2026-06 スコープ越境事故の概要と原因
事故サマリ
会社 main セッションから、個人立替金管理簿(finance_ai スコープ)を、会社経理担当エージェントが触ってしまった。
- 実害: 文字色の条件付き書式変更のみ(データ・PII 変更なし)
- 根本原因: スプシ ID を照合せず「証憑管理簿っぽい → A10 会社経理だろう」と早合点
- 副次懸念: 会社側 OAuth 認証で個人立替スプシへの書き込みが成功した= Drive スコープ分離が効いていない疑い
原因の二層構造
| 原因層 | 具体的な問題 | 対策層 |
|---|---|---|
| 認知ガード不足 | セッションが「どのスコープで動いているか」を視覚的に把握できなかった | 層① scope ラベル |
| ID 照合なし | スプシ ID = スコープのマッピングが単一ソースで存在せず、照合習慣もなかった | 層② ID 判別表 |
| Drive スコープ分離不足 | 会社経理エージェントの OAuth 権限で個人スプシへの書き込みが成功してしまった | 別途 CEO 判断(今回の設計スコープ外、承認論点に記載) |
層①: セッション scope ラベル仕様(視認性)
~/claude/sessions/<id>.md の front matter に scope: フィールドを追加する。
scope の候補値
| 値 | 意味 | 対象スプシ/Drive 例 | ダッシュボード色 |
|---|---|---|---|
| company | 会社経理・A10 証憑・業務一般 | A10 証憑管理簿, A10 Drive | 青(現在と同じ) |
| personal_finance | 個人立替・personal_finance Drive | 個人立替金管理簿, 個人立替ルートフォルダ | 赤+警告アイコン |
| client | クライアント案件(白石・三宅エリア) | Connect8_Clients Drive 配下 | 緑 |
| shared | 横断業務(秋山・トラジ系) | Connect8_Internal Drive 配下 | 紫 |
セッション開始時、cwd(作業ディレクトリ)またはタスク名から自動で scope: を推定し front matter に書き込む。
5_Personal/personal_finance/ 配下 → personal_finance2_Areas/A08_client_support/ 配下 → client2_Areas/A07_internal_dev/ 配下 → sharedそれ以外の
~/claude/ 配下 → company(デフォルト)
環境変数
CLAUDE_SCOPE が設定されている場合はそちらを優先。例:
CLAUDE_SCOPE=personal_finance claude で起動
scope が特定できない場合は
scope: unknown を設定し、ダッシュボードで「スコープ未設定」として黄色表示する。エージェントは作業開始前に自分で明示することを促す。
注意: cwd ベースは「どのフォルダで起動したか」であり、作業中に別スコープのファイルを触ることは防げない。あくまで視認性の補助。実効ガードは層②が担う。
層②: ID 判別表 & 相互ブラックリスト(実効ガード)
配置先の推奨
3_Resources/R02_org_docs/scope_id_registry.md
理由: R02_org_docs は「組織ドキュメント」エリアで全エージェントが参照する単一ソース。既存の drive_master.md(Drive ID 一覧)と同じ階層に並べることで「ID 系の情報は R02_org_docs を見る」という習慣を統一できる。
ファイル構成案
ID の表記方針: このファイルには ID の先頭 8 文字のみ記載(上記)し、フルIDは drive_master.md の参照にとどめる。設計書に金融スコープのフルIDを書き残さないため。
「このIDが何のスプシか」が確実にわかっていても、
scope_id_registry.md で照合してからアクセスする。
「アクセス禁止スコープ」列に自分の scope 値があれば即アクセス中止。
未登録 ID への書き込みは禁止。読み取りも CEO 確認後に限る。まず CEO に「このIDは何のスプシですか?」と問い合わせ、registry 登録後にアクセスする。
ファイル名・タイトルではなく、必ず ID で照合する。
scope_id_registry.md — 完全仕様
| 項目 | 仕様 |
|---|---|
| ファイルパス | ~/claude/3_Resources/R02_org_docs/scope_id_registry.md |
| 更新権限 | 秋山さん(CEO 確認後に更新) |
| 参照義務 | スプシ/Drive の読み取り・書き込み前に必ず参照(うーぱん, finance_ai, 白石, 三宅, 黒柳 全エージェント) |
| ID 表記 | フル ID(照合用途のため全文必要。ただし表示はこのファイル内に限り OK) |
| 新規 ID 登録 | CEO が新スプシ/フォルダを作成した際に秋山さんが必ず追記。担当エージェントが追記提案 → 秋山さんが承認・反映 |
| 削除 | スプシ削除・アーカイブ時に行を削除せず「廃止」列を追加して履歴保持 |
相互ブラックリスト文面案(CLAUDE.md への追記)
追記先候補: ~/claude/2_Areas/A07_internal_dev/CLAUDE.md の「セキュリティルール」セクション、または ~/claude/CLAUDE.md の「AI エージェントのスコープ制限」セクション内
追記先: ~/claude/5_Personal/personal_finance/CLAUDE.md
照合運用ルール(エージェント共通)
財務系スプシ・Drive を触る前の必須チェック
scope: 値が「アクセス禁止スコープ」に含まれていれば即中断。会社経理(うーぱん)セッション特有の追加ルール
会社経理タスクを受けた場合、冒頭で以下を宣言してから作業を開始する:
トラジへの実装依頼タスク(CEO 承認後に発注)
以下は設計案承認後、トラジ(A07 社内開発)への発注リスト。現時点では発注しない。
- セッション開始時に
cwdを元にscope:を自動判定してsessions/<id>.mdfront matter に書き込む - 判定ロジック: 本設計書「1-B」の cwd ベース判定表に従う
- 環境変数
CLAUDE_SCOPEが設定されている場合はそちらを優先 - 判定不能時は
scope: unknownにフォールバック
- セッションカードの
scope:値に応じて背景色を変える - 色仕様:
company=青、personal_finance=赤+警告アイコン、client=緑、shared=紫、unknown=黄 - 参照先:
sessions/<id>.mdの front matter - 修正対象:
2_Areas/A07_internal_dev/dashboard/配下のダッシュボード HTML/JS
scope_id_registry.mdを読み込み、指定 ID のスコープと禁止スコープを返す CLI ツール- 使い方:
python3 check_scope.py <drive_id> --current-scope company - 出力: 「ALLOW」または「DENY: 理由」
- 配置先:
2_Areas/A07_internal_dev/tools/check_scope.py - 将来的には各エージェントの Drive 操作スクリプトに import して自動照合に使う
- 会社経理エージェントの OAuth トークン(うーぱん用)で、個人立替スプシへの書き込みが成功した原因を調査
- Drive 共有設定の見直し提案を秋山さんに報告
- 対策: 個人立替フォルダを会社 OAuth アカウントの「見えない」共有設定に変更するか、ALLOWED_PARENT_IDS ホワイトリストを追加するか検討
CEO への承認依頼論点
論点 1: scope_id_registry.md のフル ID 記載方針
registry には照合のためフル ID を記載する必要があるが、R02_org_docs/ は GitHub バックアップ対象。
プライベートリポジトリ(hq-command-center)なので現時点ではリスク低だが、
finance 系フル ID をファイルに書くことへの CEO の懸念があれば別途検討する。
代替案: フル ID は ~/_credentials/scope_registry.env に置き、registry には先頭8文字のみ記載し照合は Python ヘルパーが env から読む方式。
論点 2: Drive OAuth スコープ分離(TASK-T4 発注判断)
会社経理 OAuth で個人立替スプシへの書き込みが成功した= Drive 共有設定の問題か OAuth スコープの問題かを切り分ける必要がある。 TASK-T4 はこの調査タスクだが、調査結果次第では Drive 共有設定の変更が必要になる(実害なしでも副次懸念として残る)。 TASK-T4 を今回の承認セットに含めるかどうか確認したい。
論点 3: 個人側 CLAUDE.md の存在確認
5_Personal/personal_finance/CLAUDE.md が現在存在するか確認が必要。
存在しない場合は新規作成になるが、personal_finance エリアの CLAUDE.md 新規作成は CEO の確認を取ってから行う。
設計の要点まとめ(各層 3 行以内)
| 層 | 要点 |
|---|---|
| 層① scope ラベル |
sessions/<id>.md の front matter に scope: フィールドを追加し、cwd ベースで自動判定する。ダッシュボードで personal_finance を赤・警告色で表示し、視認性を高める。あくまで「認知補助」であり、実効ガードは層②が担う。 |
| 層② ID 判別表 |
R02_org_docs/scope_id_registry.md を単一ソースとして新設し、ID → スコープ・アクセス禁止スコープを管理する。会社側・個人側それぞれの CLAUDE.md にブラックリスト(相手スコープの ID を明示的に DENY)を追記する。 「ファイル名での推定アクセス禁止・必ず ID 照合」を運用ルールとして全エージェントに適用する。 |