Auto Company(MaxMiksa/Auto-Company・GitHubスター2,728)は、14人の専門家ペルソナを持つAIエージェントに、会社の運営サイクルを無人で回させるOSSです。CEO・CFO・CTO・QA・マーケティング……といった役割の定義ファイルが用意され、Claude Code または Codex CLI をエンジンとして30秒間隔で呼び出し続けます。
この種の道具を評価するとき、機能一覧を眺めても意味がありません。無人で24時間、自分のPCを操作し続けるプログラムに対して知りたいのは2つだけです——どんな権限で起動されるのか、そしておかしくなったとき止まるのか。この記事はその2点を、本物のLLMを1回も呼ばずに測りました。
claude を置いてループを実行。トークン消費ゼロ・外部通信なしで、引数とブレーカの挙動を確認した30秒でわかる Auto Company
・何ができるか:14人のエージェント定義とBashループで、Claude Code / Codex CLI を無人で回し続ける
・何を解決するか:「エージェントに長時間まとまった作業をさせる」ときの、人が張り付く手間
・実測①:毎サイクル --permission-mode bypassPermissions が無条件に渡される(承認プロンプトが外れる)
・実測②:サーキットブレーカは本当に働く。CLIが「成功」を返しても成果物を別途検証し、5回連続失敗で停止する
この記事のポイント
・偽CLIを使えばトークン消費ゼロ・外部通信なしで、無人ループの権限と停止条件を測れる
・LICENSEファイルが無い(package.json はMIT表記・GitHub APIは license: null)。商用は要確認
・開発は2026-05-20で停止。総コミット502から増えていない
エージェント基盤全体の見取り図はAIエージェントフレームワーク比較2026|LangGraph・CrewAI・Dify等9種をStar数・実コードで検証にまとめてあります。Auto Companyはフレームワークではなく、既存のCLIを繰り返し叩く薄い層という位置づけです。
Auto Companyとは——14人のペルソナとBashループ
構造は意外なほど素朴です。中核は scripts/core/auto-loop.sh という1本のBashスクリプトで、これが次を繰り返します。
・エンジン(claude または codex)を1回呼ぶ
・出力として consensus.md が正しく生成されたか検証する
・成否をログに記録し、既定30秒待って次のサイクルへ
エージェントの「人格」は .claude/agents/ 配下のマークダウンで与えられます。実際に数えたところちょうど14本ありました。
| 役割 | ファイル | 役割 | ファイル |
|---|---|---|---|
| CEO | ceo-bezos.md |
CFO | cfo-campbell.md |
| CTO | cto-vogels.md |
批評 | critic-munger.md |
| DevOps | devops-hightower.md |
フルスタック | fullstack-dhh.md |
| インタラクション | interaction-cooper.md |
マーケティング | marketing-godin.md |
| オペレーション | operations-pg.md |
プロダクト | product-norman.md |
| QA | qa-bach.md |
リサーチ | research-thompson.md |
| セールス | sales-ross.md |
UI | ui-duarte.md |
実在の専門家の思考モデルを模した名前が付いています。役割ごとにマークダウンを1本置くという形式はmattpocock/skills完全ガイド|Claude Code用スキル集で開発プロセスを自動化のようなスキル集と同じで、違いは「人が呼び出す」か「ループが無人で呼び続ける」かにあります。LLMを内蔵しているわけではなく、下層のCLIが持つモデル・権限・ツール実行能力をそのまま継承して繰り返し呼ぶだけ、という点は最初に押さえておくべきです。
実LLMを呼ばずにAuto Companyのループを測る方法
本題です。無人ループの挙動を確かめたいが、本物のLLMを24時間回すのは費用も影響も大きすぎます。そこで PATH上に偽の claude を置きました。トークンは1つも消費せず、外部通信も発生しません。
# 実LLMを呼ばない偽CLI。渡された引数を記録し、成功形のJSONだけ返す
mkdir -p /tmp/fakebin
cat > /tmp/fakebin/claude <<'EOS'
#!/bin/bash
[ "$1" = "--version" ] && { echo "1.0.0-fake (fake)"; exit 0; }
printf '%s\n' "$@" >> /tmp/fake-claude.log
printf '{"type":"result","subtype":"success","is_error":false,"result":"FAKE-NO-LLM"}\n'
EOS
chmod +x /tmp/fakebin/claude
# 間隔とタイムアウトだけ短縮して、使い捨てのcloneでループを回す
PATH="/tmp/fakebin:$PATH" LOOP_INTERVAL=2 CYCLE_TIMEOUT_SECONDS=25 \
bash scripts/core/auto-loop.sh
# 2回目以降で "Auto loop already running (PID ...)" と言われたら、
# 前回の残骸を消してから再実行する(Ctrl+Cで止めるとPIDファイルが残る)
rm -f .auto-loop.pid
この手順は実際に2回実行して、同じ結果が出ることを確認しています。
実測①:毎サイクル、承認プロンプトが外れた状態で起動される
偽CLIが受け取った引数を記録すると、次のようになっていました。
argv[1]=-p
argv[2]=<ループプロンプト本文>
argv[3]=--output-format
argv[4]=json
argv[5]=--permission-mode
argv[6]=bypassPermissions
--permission-mode bypassPermissions が毎サイクル、無条件に渡されています。ソースを見ると scripts/core/auto-loop.sh の既定値がそうなっています。
CLAUDE_PERMISSION_MODE="${CLAUDE_PERMISSION_MODE:-bypassPermissions}"
つまり環境変数で明示的に上書きしないかぎり、承認プロンプトを外した状態で起動され続けます。
さらに同梱の .claude/settings.json も同じ方向を向いています。
| 設定 | 値 | 意味 |
|---|---|---|
permissions.defaultMode |
bypassPermissions |
既定で承認を求めない |
permissions.allow |
WebSearch Bash Edit Write WebFetch NotebookEdit Skill |
シェル実行とファイル書き込みを許可 |
permissions.ask |
[] |
確認する対象なし |
permissions.deny |
[] |
拒否する対象なし |
enableAllProjectMcpServers |
true |
プロジェクトのMCPサーバを全て有効化 |
READMEも「システムレベルの操作がホスト環境で直接起きる」と明記しており、実質的なサンドボックスは無いと作者自身が認めています。
CLAUDE.mdのガードレールはOSの強制ではない:リポジトリの CLAUDE.md には「GitHubリポジトリを削除しない」「~/.ssh を触らない」といった禁止事項が書かれています。これらはプロンプト上の約束事であって、OSレベルで強制されるものではありません。gh や wrangler の認証情報がある環境では、外部への不可逆な操作も無人で走り得ます。試すなら隔離環境・使い捨ての専用アカウント・最小権限のトークンを用意してください。
実測②:サーキットブレーカは「成功」を鵜呑みにしない
ここは想像より良くできていました。
偽CLIは subtype: success / is_error: false、つまり「成功しました」と返しています。それでもループは各サイクルを [FAIL] と判定しました。
[06:01:08] Cycle #1 [START] Beginning work cycle
[06:01:11] Cycle #1 [FAIL] consensus.md validation failed after cycle (errors: 1/5)
[06:01:13] Cycle #2 [FAIL] consensus.md validation failed after cycle (errors: 2/5)
[06:01:15] Cycle #3 [FAIL] consensus.md validation failed after cycle (errors: 3/5)
[06:01:17] Cycle #4 [FAIL] consensus.md validation failed after cycle (errors: 4/5)
[06:01:20] Cycle #5 [FAIL] consensus.md validation failed after cycle (errors: 5/5)
[06:01:20] Cycle #5 [BREAKER] Circuit breaker tripped! Cooling down 300s...
判定基準はエンジンの終了ステータスではなく、consensus.md が実際に生成・検証できたかです。だからこそ「CLIは成功と言っているが中身が出ていない」という一番厄介な失敗を検出でき、ちょうど5回でブレーカが落ちて300秒のクールダウンに入りました。
無人で回す道具として、ここが機能しているかどうかは大きな差です。壊れたまま延々とAPIを叩き続ける実装だったなら、費用も被害も青天井になります。
bypassPermissions付き"] B --> C{"consensus.md は
生成・検証できたか"} C -->|"できた"| D["成功。エラー数を0に戻す"] C -->|"できない"| E["FAIL。エラー数を+1"] E --> F{"5回連続か"} F -->|"未満"| G["30秒待って次へ"] F -->|"5回"| H["ブレーカ作動
300秒クールダウン"] D --> G
この検証で分かっていないこと:偽CLIを使った以上、エージェントが実際に何を書くか・どんなコマンドを実行するかは未検証です。測れたのは「ループがエンジンをどう呼ぶか」「エンジンの応答をどう判定するか」という外枠だけで、bypassPermissions を渡された本物のClaude Codeがホスト上で何をするかは別問題として残ります。そこは隔離環境で自分の目で確かめてください。API利用料も測っていません。
リポジトリの実態——LICENSEが無く、開発は止まっている
導入判断に効く事実を2026年9月2日に実測しました。
| 観測項目 | 実測値 |
|---|---|
| スター / フォーク | 2,728 / 436 |
| 総コミット数 | 502 |
| ブランチ数 | main の1本のみ |
| 最終コミット | 2026-05-20(ebfab9b4) |
| バージョン | v1.1.0(package.json) |
| LICENSEファイル | 存在しない |
| GitHub APIのライセンス | null |
LICENSEが無い点は軽視しないでください。 package.json には "license": "MIT" と書かれており、作者がMITを意図していることは強く読み取れます。しかし正式なMITライセンスは、著作権者名と無保証条項を含むライセンス文の掲示によって成立します。ライセンス文が無い状態は、著作権法の既定に照らすと全権利留保(all rights reserved)と解釈され得ます。
個人が手元で試す分にはまず問題になりません。ただし商用利用・再配布・フォーク公開を考えるなら、作者へLICENSEファイルの追加を依頼するか、書面で許諾を得てからにするのが安全です。開発が止まっている以上、依頼への応答が得られる見込みは高くない点も織り込んでおく必要があります。
なおスターは伸び続けています。GitHubのトップページはスター数とフォーク数を大きく見せるため、注目度を活性度と取り違えやすい構造になっています。観測すべきは既定ブランチの最終コミット日です。
補足:プロンプトとエージェント定義は中国語で書かれている
日本語話者が触る前に知っておくとよい点です。ループの中核プロンプトと14人のエージェント定義は主に中国語でした。
・PROMPT.md:全1,467文字のうち漢字388・ラテン文字596・かな0。冒頭は英語見出しだが本文は中国語で始まる
・.claude/agents/*.md:ceo-bezos.md が漢字653字、critic-munger.md が漢字1,060字といった構成
・READMEは英語版(README.md)と中国語版(README-ZH.md)の2種類
挙動そのものはモデルが多言語を解するので問題になりません。しかし前述のとおりCLAUDE.mdのガードレールはプロンプト上の約束事なので、自分の環境に合わせて厳格化するなら中国語のプロンプトを読んで直すことになります。ここを読めるかどうかは、安全に運用できるかに直結します。
どんな人が試すべきか
向いている人
・エージェントを長時間走らせる仕組みそのものに関心があり、使い捨ての隔離環境を用意できる人
・Bashループの実装を読んで、自分の用途に合わせて書き換えるつもりがある人
・「サーキットブレーカや失敗検知をどう作るか」の実例として読みたい人
向いていない人
・本番環境や、認証情報の入った常用マシンで動かしたい人。既定で承認プロンプトが外れます
・商用利用を前提にしている人。LICENSEファイルが無く、開発も止まっています
・放置してお金が増えることを期待する人。これは24時間ループを回す仕組みであって、収益を保証するものではありません
同じ「エージェントに権限を渡す」設計でも、何が機械的に強制され何が文章上のお願いに留まるかは製品ごとに違います。その見分け方はClaude-OSINTとは|9本のOSINTスキルの起動条件・常駐トークン・安全弁を実測で確かめたでも同じ観点から整理しています。
参照ソース
・MaxMiksa/Auto-Company — GitHub リポジトリ(README・package.json・.claude/agents/・scripts/core/auto-loop.sh。本記事の件数と設定値はここを参照)
・Auto Company の auto-loop.sh(CLAUDE_PERMISSION_MODE の既定値とサーキットブレーカの実装)
・Claude Docs — Claude Code settings(permissions.defaultMode と bypassPermissions の意味)