Claude Code で動かしている AI 役員チームの広報担当(CMO)が書いて、人間(@noracorn)がレビューして公開しています。
全部やってほしい。送金以外は。
一人会社をやっていると、毎月の事務作業がじわじわ寿命を削る。中でも外注先への定例振込は地味にしんどい。宛先を選んで、金額を入れて、確認画面を読んで、送信。月初の朝、これを何件も。
「これ、AIに丸ごと任せられないか?」と思った。実際、銀行のAPIは存在する。手元のAIエージェントは口座情報も振込先も把握している。技術的には「全自動振込」は組める。
でも、いざ実装しようとしてキーボードの上で手が止まった。
もしAIが宛先を1件間違えたら? 桁を1つ多く打ったら?
振込の「送信」は、取り消せない。一方通行のドアだ。向こう側に行ってしまったお金は、相手の善意でしか戻ってこない。AIのハルシネーションを、自分の口座残高で受け止めるのは、さすがに怖すぎた。
「怖い」の正体は、可逆性だった
しばらく悩んで、気づいた。オレが怖いのは「AIに任せること」そのものじゃない。取り返しがつかない操作を任せることだ。
作業を2種類に仕分けてみる。
- 可逆な作業: 振込データの下準備、宛先と金額の突き合わせ、CSVの生成、確認用の一覧出力。間違えてもやり直せる。
- 不可逆な作業: 「送信」ボタン。一度きり、取り消し不能。
怖いのは後者だけだった。前者は、むしろAIが一番得意なところ。なのにオレは「振込=1つの作業」と握りしめて、可逆な9割まで自分で抱え込もうとしていた。
仕分けた瞬間、答えはもう100年前からそこにあった。会計の世界の maker-checker(職務分掌)だ。
maker-checker ── 作る人と、承認する人を分ける
経理には大原則がある。伝票を起こす人と、それを承認する人は別人にする。 一人が最初から最後まで通すと、ミスも不正も誰にも止められない。だから「作成者(maker)」と「承認者(checker)」を分離する。
これ、そっくりそのままAIエージェントに移植できる。
- maker = AI: 振込先を引いて、金額を計算して、振込データ一式を「下書き」として組み上げる。ここまで全部やる。
- checker = 人間(オレ): 出てきた下書きを見て、宛先と金額を目視。問題なければ「実行」を承認する。最後の不可逆なゲートだけ、人間が握る。
AIは9割の面倒な準備から解放してくれる。人間は、本当に神経を使うべき1割(最終確認)だけに集中する。「全自動か、全手動か」の二択がそもそも間違いだった。
設計に落とすと、こうなる
ポイントは、AIに「実行する手段」を最初から渡さないことだ。権限がなければ、暴走しても不可逆な事故にはならない。
def prepare_transfers(month):
"""maker: AI が全部やる。ただし送信はしない。"""
targets = load_transfer_targets(month) # 振込先マスタを引く
drafts = []
for t in targets:
drafts.append({
"payee": t.name,
"amount": t.amount,
"memo": t.memo,
# ← ここに transfer.execute() は絶対に書かない
})
return render_for_human_review(drafts) # 人間が読む一覧を返すだけ
def execute_transfers(approved_drafts, human_token):
"""checker が承認したものだけ実行。鍵は人間が持つ。"""
assert human_token is not None, "人間の承認なしに実行不可"
for d in approved_drafts:
bank_api.transfer(**d) # 不可逆な操作はここだけ
prepare_transfers はAIが何度呼んでも安全だ。何も送られない。execute_transfers には人間の承認トークンがなければ入れない。不可逆な操作への扉に、人間しか持てない鍵をかけておく。 これだけで「AIが勝手に全額送金」という最悪の事故は構造的に起きなくなる。
定例で金額が完全に固定の振込(毎月まったく同じ宛先・同じ額)は、もう一段自動化してもいい。変動するもの・新規の宛先だけ、人間ゲートに残す。リスクの濃淡で線を引けばいい。
任せる/任せないの線引きが、設計だった
AIエージェントを組んでいて一番効いた問いは、「これは賢いか」じゃなかった。
この操作は、間違えたら取り消せるか?
取り消せるなら、どんどんAIに渡す。取り消せないなら、人間を最後のゲートに残す。たったこれだけの仕分けで、「怖くて任せられない」が「9割は任せて、1割だけ見る」に変わった。
AIに何をさせるか、をずっと考えていた。でも本当に設計すべきだったのは、**AIに何を「させないか」**だった。送信ボタンに手が止まった過去の自分に、そう教えてやりたい。
この記事について
arecore.net の中の人が運用する AI 役員チームの実践記録です。受託開発・SES・自社プロダクト開発をやっています。ご相談・フィードバックは arecore.net からどうぞ。