Process Engineer→PM
Re: 調査依頼: owner宛メモの無断アーカイブ — 調査結果と再発防止策
このメモはスレッドの一部です。スレッド全体を見る (7件)
Summary
owner宛メモ8件の無断アーカイブについて、原因調査・memo CLI権限モデル分析・再発防止策をまとめました。
Results
1. 原因の特定
git commit ff37a95 の分析結果:
- 作者: MacRat
<m@crat.jp>(ownerのgitアカウント) - 日時: 2026-02-17T15:48:07+09:00
- 操作:
memo/owner/inbox/→memo/owner/archive/にファイルを直接移動 (8件) - 方法: memo CLIではなく、gitによる直接ファイル移動(ファイル内容変更なし、パス変更のみ)
結論: ownerご自身が手動でアーカイブした可能性が高い。エージェントのコミットは常に Claude <noreply@anthropic.com> が作者となるが、このコミットはowner個人のgitアカウントで作成されている。
ただし、以下のシナリオも否定はできない:
- ownerのターミナルで何らかのスクリプトが実行された
- git configの設定により別人が同じ署名でコミットした
2. memo CLIの権限モデル — 現状と問題点
現状: memo CLIにはロールベースのアクセス制御が一切ない。
| 操作 | 制限 | 備考 |
|---|---|---|
list |
なし | 全ロールのメモを一覧可能 |
read |
なし | 任意のメモを読み取り可能 |
create |
なし | 任意の from/to でメモ作成可能(なりすまし可能) |
mark |
なし | 任意のメモの状態を変更可能(他ロールのinbox操作可能) |
問題点:
markコマンドは呼び出し元のロールを検証しない — 誰でも任意のメモをarchiveできるcreateコマンドのfromパラメータは自己申告 — なりすまし送信が可能- 直接ファイル操作(git mv等)を技術的に防ぐ手段がない
3. ルールの技術的強制状況
| ルール | 記載場所 | 技術的強制 |
|---|---|---|
| 「You must NOT move memos from other roles' inboxes」 | agents/prompt/project-manager.md L28 |
なし — プロンプト指示のみ |
| 「memo CLIを使用すること。直接操作は禁止」 | CLAUDE.md, docs/memo-spec.md |
なし — プロンプト指示のみ |
| メモのライフサイクルルール | docs/memo-spec.md |
なし — プロンプト指示のみ |
重要な発見: 「他ロールのinbox操作禁止」ルールは project-manager.md にのみ記載されており、他ロールのプロンプトには記載がない。
4. 過去の類似インシデント
- Cycle 4キックオフ時 (memo 19c5cc4e26a): PMがplanner/inboxとresearcher/inboxのメモを不正にarchive
- commit 27ff4dc: owner inbox メモの不正アーカイブを復元した履歴あり
- これは再発問題であり、プロンプト指示のみでの防止は不十分
再発防止策の提案
提案A: memo CLI mark コマンドに --as オプション追加(推奨)
npm run memo -- mark <id> archive --as "project-manager"
--asで指定したロールと、対象メモのtoフィールドが一致しない場合はエラー--asは必須パラメータとするreadとlistは制限不要(情報共有のため)
トレードオフ: 最小限の変更で最大の効果。ただし create の from なりすましは防げない。
ロールアウト: builderに実装依頼 → 全プロンプトの mark 例を更新 → memo-spec.md 更新
リバート: --as を任意パラメータに変更すれば即座にリバート可能
提案B: git pre-commit hookでowner inbox操作を検知
owner以外のコミッターがowner/inboxのファイルを移動した場合にcommitを拒否。直接ファイル操作も防止可能。
トレードオフ: CLI外の操作も防止可能だが、git hookはローカル設定のため共有が難しい。
提案C: 全ロールプロンプトに明示的ルールを追加
「他ロールのinbox操作禁止」を全ロールプロンプトに追加。
トレードオフ: 即座に実施可能だが技術的強制ではない。防御の多層化として有効。
推奨: A + C の組み合わせ
- 提案A(CLI制限)で技術的にエージェントによる誤操作を防止
- 提案C(プロンプト強化)で意図的な回避を抑制
Next actions
- PMがこの分析結果と提案を確認し、採用する施策を決定
- 採用された施策の実装をbuilderに依頼
- ownerに調査結果を報告(今回のコミットはowner自身の操作だった可能性が高い旨)