← 活動記録一覧

LEARNING MAP · LIVING MASTER

AI組織のハーネス設計で、失敗したこと

Wirohは、AIエージェントの役割、連携の仕組み、権限を定め、安全のためのルールを加えながら、AIと人間による組織を実際につくれるか実験しています。

その多くは役に立ちました。一方、ここに記す失敗は、組織を動けなくしました。

Activityはcutoff時点の事実を記録しています。このMAPは、その事実に対するWirohの現在の解釈です。十分に確かめていない一般化は、仮説として示します。

ACTIVITY-0001ACTIVITY-0248 ·

30秒で見る、失敗MAP

ホワイトリスト型の安全制御機構が、通常作業を止めるまで

きっかけは、許可したcommandだけを通すホワイトリスト型制御の提案を採用したことでした。その制御機構の仕組みと精密な横断レビューが、やがてcommandの実行経路をwrapperへ集約する仕組みに広がりました。

独立reviewを担うRitsuが抜け道や例外を指摘するたびに、rule、receipt、manifest、検査を追加しました。reviewと改善を繰り返すほど安全制御は拡大し、想定外の作業をほとんど扱えなくなり、最後には通常作業と中止処理まで止まりました。

project固有のhookとwrapperを撤去してCodex標準のsandboxと承認モデルへ戻しました。実行時の危険判定は標準機構へ任せ、project固有の責任者と承認条件はrootの`AGENTS.md`に明示しています。具体的には、認証再設定には人間の承認を求め、secretを表示・保存せず、GitとGitHubの状態変更はmain agentが所有し、mergeには人間の承認を必要とします。commandを列挙するblacklistは実装していません。

  1. 01

    AIがallow型制御を提案

  2. 02

    commandをwrapperへ集約

  3. 03

    独立reviewが抜け道を指摘

  4. 04

    指摘ごとにruleを追加

  5. 05

    reviewと改善を反復

  6. 06

    想定外の作業が止まる

  7. 07

    通常作業まで止まる

  8. 08

    標準機構へ戻す

7つの失敗

各章は、起きたこと、現在の姿勢、適用限界、根拠Activityを同じ順序で示します。

L-01·現在の判断

仕様を推測したまま、組織を設計した

起きたこと

Activity 0004では、promptで役割名を渡しただけのsessionにCustom Agentの設定が適用されておらず、role IDをagent_typeへ指定した起動で設定profileの適用を確認しました。

Activity 0005では、起動時のrole ID、UI nickname、model、reasoning effortが設定と一致していても、一部のagentが回答上では別のroleとnicknameを名乗りました。

Activity 0072では、sessionをresumeしても、以前に完了したsubagentがlive treeへ戻りませんでした。

現在の設計姿勢

最初にschema、許可文字、tool API、runtime metadataを確認し、その後で組織ルールを設計します。

role ID、UI nickname、自己識別を分け、起動結果をruntime情報で確かめます。

適用限界

Codexの仕様は変わる可能性があり、今回観測した契約を将来も不変とは扱いません。

根拠ACTIVITY (6)
L-02·現在の判断

安全と運用を固めるほど、組織が動けなくなった

起きたこと

Activity 0034では、通常編集の承認疲れを減らす依頼に対し、AI側が大きなpermission profileを提案し、CEOが意図と異なるとして取り下げました。

Activity 0048では、厳格な完了receipt案が保留、中止、並行作業まで止める構成になり、CEOは採用しませんでした。Activity 0051では、単純な会話確認のためのsession参照helperが複雑化し、作業が中止されました。

Activity 0054では、Ritsuのreviewと改善を重ねた四段階lifecycleでもready化、merge、中止処理が順に停止し、最後はPRとIssueを閉じるためにhelper自体を一時修正しました。

Activity 0055で独自hookとwrapper群を削除し、実行制御を標準のsandboxと承認モデルへ戻しました。その後、Activity 0220と0223で独立review、CEOのmerge承認、Issue対PR、branch対PRの関係を運用規則として定めました。

Activity 0214で企業情報とproduct体験を一つのWeb buildへ統合しました。Activity 0215で旧公開サイトを凍結し、Activity 0217で不要になった作業記録とsnapshot機構を削除しました。Activity 0219では、project外にあったagent定義とroutingを、利用するsourceと同じrepositoryへ移しました。

現在の設計姿勢

標準のsandboxと承認モデルを基礎にし、projectには変更主体、IssueとPRの関係、独立review、人間のmerge承認を残します。

現在のルール、agent定義、仕様、design、実行対象は、実際に利用する一つのprojectへ寄せます。

秘密情報、破壊的操作、公開、mergeの境界は守りつつ、想定外の状態では実際の対象と副作用を確認して判断します。

適用限界

法令、資金、production infrastructureなど、固定手順と強い証跡が必要な作業まで簡略化する判断ではありません。

repositoryを分けること自体を失敗とはしません。runtime、release、security、所有責任が実際に異なる境界は分離します。

根拠ACTIVITY (12)

Activityの適用状態を成功・失敗とみなさず、この学びへの役割と接続理由を表示します。

L-03·検証中

外部サービスの操作方法まで、project固有に固定しようとした

起きたこと

Activity 0007と0040では、GitHub接続、CLI fallback、認証確認、role routingをrepository-local wrapperとproject Skillへ集約しました。

Activity 0055では、独自hookとwrapperを削除し、外部操作を対象限定の直接実行と実状態の再確認へ戻しました。

現在の設計姿勢

project横断で利用するMCPとpluginはuser共通設定に置いています。現在はNode REPL、Blender、Cloudflare Docs・API・Bindings・Builds・Observability、PencilのMCPを有効にし、Computer Useはpluginとして有効です。user共通設定にはComputer Useの直接登録MCPも残っていますが、その経路は無効です。

このprojectにはproject-scoped .codex/config.tomlがなく、外部サービスを特定のMCP、plugin、CLIだけで操作する規則も置いていません。利用可能な手段から、作業に合うものを選びます。

GitHubについては操作方法を一つに縛らず、変更主体、network、認証変更、secret、merge承認の境界をrootのAGENTS.mdに定めています。project固有のSkillやルールが必要な場合も、接続手段ではなく、対象、責任、避けるべき副作用、完了条件を定めます。

適用限界

外部サービスの利用方法をproject固有に定めること自体を否定するものではありません。再現性、契約、security、service固有の業務手順が必要なら、そのprojectに置く方が適切です。

共通MCPとpluginの構成は2026年8月20日時点の利用環境であり、恒久的な標準ではありません。

根拠ACTIVITY (4)
L-04·検証中

委譲の深さを、組織の成熟度だと考えた

起きたこと

MakoからRyoma、Manabu、Ikumiへ委譲するような多段のdelegation chainで、孫agentまで起動できることは確認しました。

一方、Makoからは孫agentのhandoffを待っている状態が見えず、孫agentの作業と競合し得る別の作業をほかのsubagentへ指示することがありました。Mako自身のsessionを先に終了し、孫agentがhandoffを返しても回収されない事例もありました。

resumeでは完了済みagentが自動でlive treeへ戻りませんでした。

現在の設計姿勢

main agentが起動、待機、結果回収、統合を所有し、subagentへは独立して完了できる範囲を渡します。

適用限界

委譲の説明が実作業より大きい場合にmain agentが一部の実作業を担う方が効率的かどうかは、まだ確認していません。独立調査や競合しない並列作業にはsubagentが有効です。

根拠ACTIVITY (6)
L-05·現在の判断

人間の職種を、そのままAIの役割へ細分化した

起きたこと

Activity 0024で、Narrativeの構造と執筆を担うroleから、文章表現を別のScenario Writerへ分けました。

Activity 0033では、意味設計とWritingの境界が曖昧になり、制約の受け渡しと確認が重複していることを、役割再編の理由として確認しました。

現在の設計姿勢

現在はWriting専任agentを置かず、Narrative DesignからWritingまでを一つのroleが所有します。

役割は職種名より一貫した成果責任で考え、一つの意味を最後まで保つ範囲を同じroleが所有します。

作成と独立reviewは分けます。

適用限界

法務、安全性、securityなど独立性が重要な判断や、専門的な制作技術は分離が必要です。

根拠ACTIVITY (5)
L-06·現在の判断

作業記録が、将来の作業ノイズになった

起きたこと

原文の削除を明示的に指示しない場合、AIは既存の記述を残し、削除した仕様を打ち消しや否定として追記する変更を選びやすい状態でした。その結果、現在の仕様と過去の作業記録が一つの文書へ積み重なりました。

修正を重ねるうちに、以前の否定をさらに否定する記述も生まれました。文書は肥大化し、人間にも現在有効な指示が見えにくくなり、AIが古い記述を参照したり、現在のルールに従わなかったりする原因となるノイズになりました。

同じ正本をhandoffやsnapshotへ複製したことで更新経路も増え、どの文書が現在の判断なのかをさらに判別しにくくしました。

現在の設計姿勢

AIは原文の削除をリスクと見なし、安全側に追記を選びやすいという前提で、仕様書には作業記録ではなく現在のsystem behaviorを示すマスタであることを明記します。判断が変わったときは、古い仕様を打ち消しや否定として残さず、現在有効な内容へ置き換えることまで更新指示に含めます。

変更の経緯や過去の事実はActivity、運用台帳、archiveへ分け、現在の仕様へ複製せず参照します。

このMAPには現在の解釈だけを掲載し、根拠となる過去の事実は各Activityで読める状態を保ちます。

適用限界

security、法務、監査上の記録は保持が必要であり、保管場所を分けることは履歴の削除ではありません。

根拠ACTIVITY (5)
L-07·現在の判断

ルールより先に、判断の方向を共有すべきだった

起きたこと

Narrativeの雛形と過去のreview snapshotはありましたが、CEOの確認、後続design、公開境界の判断に使う現行版が一つに定まっていませんでした。過去に確認した版から、途中で変わった判断や未承認の表現まで再利用される可能性がありました。

ページ本文を直しても、実装担当へ渡す資料には古い文言や、何を公開してよいかについての古いルールが残りました。さらに、正本の内容をその資料へコピーしたため、同じ情報が二か所に存在し、どちらが最新か分からなくなりました。

現在の設計姿勢

Narrativeのcurrent masterで事実、解釈、仮説、創作の境界を分けます。Brand Bible、Narrative Guidelines、Fact Boundary、Key TermsでWhy、What、語り口、事実境界、主要語を責務別に管理します。

About、Homeなどの下流成果物は同じ正本へ揃え、正本の内容を複製せず参照します。

正本にない新しいブランド判断は人間の確認へ戻します。

適用限界

Narrativeはsystem仕様、test、安全制御、承認を置き換えません。

根拠ACTIVITY (5)

現在のハーネス

抽象的な原則だけでなく、cutoff時点のrepositoryに実在する正本を抜粋します。実行時の危険判定はCodex標準のsandboxと承認モデルへ任せ、project固有の責任者と承認条件はrootの`AGENTS.md`に置いています。project固有の`.codex/config.toml`、hook、command wrapper、command blacklistは現在このrepositoryに置いていません。

SCHEMATIC · .

現在の正本を一つのprojectへ置く

AI運用、agent定義、Narrative、system仕様、UI designを同じrepositoryで管理し、Activityと台帳は現在の作業入力から分けています。このtreeは構造を示す模式表現です。

AGENTS.md                         # AI組織の運用と権限
.codex/agents/*.toml              # 管理agentの実行契約
narrative/                        # Why・What・事実境界の正本
docs/architecture/                # 現在のsystem behavior
designs/                           # UI designの正本
apps/web/content/activity/         # 公開ActivityとこのMAP
docs/activity/                    # 非公開の作業台帳

SCHEMATIC · .

共通の接続手段とproject固有ルールを分ける

MCPやpluginなどの接続手段はuser共通設定へ置き、このprojectにはproject-scoped MCP設定を置いていません。projectは外部サービスの操作方法を一つに固定せず、必要な責任境界を`AGENTS.md`で定めます。この一覧は2026年8月20日時点の設定を示す模式表現です。

user-level configuration          # project横断の接続手段

MCP enabled
  Node REPL
  Blender MCP
  Cloudflare Docs MCP
  Cloudflare API MCP
  Cloudflare Bindings MCP
  Cloudflare Builds MCP
  Cloudflare Observability MCP
  Pencil MCP

plugin enabled
  Computer Use

direct MCP entry disabled
  Computer Use

project/.codex/config.toml         # 置いていない
project/AGENTS.md                  # 操作方法ではなく責任境界を定義

SCHEMATIC · .

繰り返し使う専門知識はuser共通Skillに置く

projectをまたいで再利用する専門知識はuser共通Skillとして置いています。外部サービスへ接続するMCPとは異なり、Skillは作業時に読み込む手順と判断基準です。この一覧は2026年8月20日時点の構成を示す模式表現です。

user-level Skills
  agents-sdk
  cloudflare
  cloudflare-email-service
  cloudflare-one
  cloudflare-one-migrations
  durable-objects
  sandbox-sdk
  supabase
  supabase-postgres-best-practices
  turnstile-spin
  web-perf
  workers-best-practices
  wrangler

project Skills
  .agents/skills/
    author-activity-record         # project固有の手順と判断基準

EXACT-EXCERPT · AGENTS.md

状態変更はmain agentが所有する

main agentは変更とlifecycleを所有し、subagentは専門調査、検証、独立reviewを担います。これは現在の`AGENTS.md`からの抜粋です。

- リポジトリまたはGitHub上の状態を変更する操作は、メインエージェントだけが実施してください。これには、Issueの作成、作業ブランチの作成・切り替え、fetch、pull、merge、rebaseなどのbranch/ref更新、ステージング、コミット、push、およびIssueやPRの作成・更新・コメント・レビュー投稿・マージを含み、サブエージェントには実施させないでください。
- サブエージェントは、調査、検証、独立レビューに必要なread-onlyのgit操作およびGitHub操作を実施できます。ただし、前項の状態変更操作は実施してはなりません。

SELECTED-EXCERPTS · AGENTS.md

高リスクな責任境界はAGENTS.mdに置く

command一覧ではなく、認証再設定、secret、GitとGitHubの状態変更、mergeについて、誰が判断し、どこで人間の承認が必要かをrootの`AGENTS.md`に明示しています。

- サンドボックス外でも失敗する場合は、network障害、repositoryまたはremoteの指定誤り、権限不足、認証失効を区別してください。認証の再設定が必要と確認できた場合に限り、人間の承認を得てから、対象accountとhostを明示して`gh auth login`または必要最小scopeの`gh auth refresh`を実行してください。認証変更はメインエージェントだけが実施できます。

...

- token、credential、認証headerを画面、log、Issue、PR、commit、ファイルへ表示または保存してはなりません。`gh auth token`、`gh auth status --show-token`、tokenを含むremote URL、環境変数の展開表示、shell trace、認証responseの全文出力など、secretを露出し得る確認方法を使用しないでください。

...

- PRのマージは、最新の変更内容について人間によるレビューで承認されている場合、または人間から当該PRの変更範囲を対象として明示的なマージ承認が事前に出ている場合に限り実行してください。承認後に実質的な変更が加わった場合は、改めて人間の承認を確認してください。PRの作成依頼や`pr-reviewer`を含むサブエージェントの承認だけでは、マージの承認として扱わないでください。いずれも確認できない場合は、マージせず人間の判断を求めてください。

SELECTED-EXCERPTS · AGENTS.md

deliveryでは関係と承認主体だけを固定する

Issue、branch、PRの関係、独立review、人間のmerge承認を残しています。全状態を専用wrapperで証明する仕組みは置いていません。

- すべてのPRをIssueへ関連付けてください。IssueとPRは1対Nとし、1つのIssueに複数のPRを関連付けることができます。
- 作業ブランチとPRは1対1とし、同じIssueに複数のPRを作成する場合も、PRごとに別の作業ブランチを使用してください。

...

- `pnpm verify`に成功した最終差分をpushした後で、マージ前レビューの担当として`pr-reviewer`を1回起動または再開し、実装担当から独立した観点でPR全体と検証結果を確認させてください。

...

- PRのマージは、最新の変更内容について人間によるレビューで承認されている場合、または人間から当該PRの変更範囲を対象として明示的なマージ承認が事前に出ている場合に限り実行してください。

EXACT-EXCERPT · .codex/agents/organization-designer.toml

roleはASCIIの実行IDと成果責任で定義する

role名とnicknameはruntimeで扱えるASCIIにし、役割の説明は肩書きより、診断、設計、連携という成果責任を記述します。

name = "organization-designer"
description = "組織全体を俯瞰しながら、役割や責務の境界を丁寧に設計し、それぞれの専門性が自然につながる仕組みをつくる。AI組織が一貫性と拡張性を保ちながら、変化に合わせて進化し続けられるよう支える存在です。"
nickname_candidates = ["yui"]

developer_instructions = """
あなたは Wiroh という組織における Organization Designer です。

役割:
- 組織の目的と戦略に沿って、必要な役割、責務、権限、連携関係を設計します。
- 組織の構造や運営上の課題を診断し、重複、空白、ボトルネックを明らかにします。
- 役割間の意思決定と協働の仕組みを整え、組織が変化から学び、継続的に発展できるよう支援します。
- 自己識別を求められた時は、role id `organization-designer`、UI nickname `yui`、Organization Designer の担当範囲を返します。
"""

HYPOTHESIS

まだ結論にしていないこと

Activityから直接確認できない一般化は、現在の仮説として残します。

  • project横断の接続手段とproject固有ルールの境界は、serviceや作業によってどこに置くべきか。
  • main agentが担うべき実作業量はどの程度か。
  • role数と同時起動枠の適切な関係は何か。
  • 標準のsandboxと承認モデルに委ねながら、承認疲れを増やさず危険な境界をどこまで明示できるか。

このMAPの更新

  1. ADDEDActivity 0001〜0248を再評価し、7つの失敗と現在の設計判断を最初の版として整理しました。 ACTIVITY-0248

これはWirohが得た最終回答ではありません。Activity 0001〜0248から読み取った現在の設計判断です。

次のActivityがこのMAPを変えるかもしれません。

答えを固定するためではなく、AIとの『いい塩梅』を実践から探し続けるためのMAPです。