CLAUDE LABEN
OPUS — Claude Opus 4.7が一般提供になりました。ソフトウェアエンジニアリングと長時間コーディングが改善し、画像を高解像度で扱えるようになりましたAPIKEY — ConsoleでAPIキーに有効期限を設定できるようになりました。7日以上のキーは失効前にメールで通知されますREFLECT — Settings > Reflectの月次ふりかえりで、よく触れた話題や最も活発だった時間を確認できます(beta)M365 — Microsoft 365コネクタが書き込みに対応し、メール作成・カレンダー・OneDrive/SharePointのファイル操作を任せられますCOWORK — CoworkがWebとモバイルへ広がり、ChatとCoworkが一つのホームにまとまりましたDESIGN — Anthropic LabsのClaude Designで、設計・プロトタイプ・スライド・1枚資料をClaudeと共同制作できますOPUS — Claude Opus 4.7が一般提供になりました。ソフトウェアエンジニアリングと長時間コーディングが改善し、画像を高解像度で扱えるようになりましたAPIKEY — ConsoleでAPIキーに有効期限を設定できるようになりました。7日以上のキーは失効前にメールで通知されますREFLECT — Settings > Reflectの月次ふりかえりで、よく触れた話題や最も活発だった時間を確認できます(beta)M365 — Microsoft 365コネクタが書き込みに対応し、メール作成・カレンダー・OneDrive/SharePointのファイル操作を任せられますCOWORK — CoworkがWebとモバイルへ広がり、ChatとCoworkが一つのホームにまとまりましたDESIGN — Anthropic LabsのClaude Designで、設計・プロトタイプ・スライド・1枚資料をClaudeと共同制作できます
記事一覧/Cowork
Cowork/2026-07-12上級

コネクタに書き込みツールが増えた夜、無人ジョブは黙って何かを送れるようになる

コネクタの更新で書き込みツールが静かに増えた瞬間、無人で回している定期処理はメール送信やファイル削除まで手が届くようになります。ツール表面のスナップショットと差分検知で、未承認の書き込みを実行前に止める関所の作り方を、個人開発の実務からまとめます。

cowork12mcp14connectorunattended2security9

プレミアム記事

いつも通り夜間の定期処理を走らせて、翌朝ログを見返していたときのことです。処理そのものは成功していました。ただ、使っているコネクタのツール一覧に、前の週にはなかった名前がいくつか並んでいました。create_messagesend_messagedelete_file。連携先が更新され、これまで読み取りしかできなかったコネクタが、メールの作成・送信やファイル操作にまで対応したのです。

そのこと自体は歓迎すべき進化です。けれど私は少し背筋が冷えました。私の夜間ジョブは、コネクタが差し出すツールを状況に応じて自律的に選びます。昨日までは、どれだけ判断を誤っても最悪「読み違える」だけで済みました。今夜からは、同じ判断ミスが「送ってしまう」「消してしまう」に化けます。危険は私のコードが変わった瞬間ではなく、連携先のツール表面が静かに広がった瞬間に生まれていたのです。

2026年7月には Microsoft 365 コネクタが書き込みツールに対応し、メールの作成・送信・整理、カレンダー操作、OneDrive や SharePoint のファイル作成・更新まで扱えるようになりました。人が横にいれば「送信」ボタンの前で一呼吸置けます。無人運用では、その一呼吸を自分で設計に埋め込んでおかない限り、誰も止めてくれません。個人開発で4サイトを無人運用している立場から、ツールが増えたことを検知し、未承認の書き込みを実行前に堰き止める関所を、実際に動くコードとして組み立てていきます。落とし穴は、コネクタが賢くなるほど静かに深くなります。

危険は「新しいツールが増えた瞬間」に生まれる

無人ジョブのセキュリティを考えるとき、私たちはつい自分のプロンプトや権限設定に目を向けます。けれど、エージェントが実際に呼べる操作の範囲は、最終的にはコネクタが公開するツール一覧が決めています。ここが盲点でした。私のコードも権限スコープも一文字も変えていないのに、連携先がバージョンを上げただけで、実行可能な操作の集合が広がってしまうのです。

読み取り専用のコネクタなら、最悪の失敗は「間違った情報を読む」で止まります。ここに書き込みツールが一つ加わると、失敗の質が変わります。読み違えは巻き戻せますが、送信済みのメールや削除したファイルは簡単には戻りません。つまり監視すべきは「今どんなツールがあるか」ではなく、「先週から何が増えたか」という差分のほうなのです。

方針はこう決めました。ツールの増減、とりわけ書き込み・破壊的なツールが新しく現れたことを毎回検知する。そして未承認のまま実行に進ませない。承認は私が明示的にポリシーファイルへ書き込んだときにだけ成立させる。この「新しく増えた書き込みツールは、既定では拒否」という向きを、無人ジョブの一番外側に置きます。

ツールを read / write / destructive に自動仕分けする

最初の部品は、ツール一覧を危険度で仕分けする分類器です。MCP のツールは名前と説明を持っています。完璧な意味解析は要りません。名前の動詞を手掛かりに三段階へ振り分けるだけでも、実務上は十分に効きます。判断がつかないものは、安全側に倒して「要確認」に集めます。

# classify_tools.py
import re
from enum import IntEnum
 
class Risk(IntEnum):
    READ = 0        # 参照のみ。巻き戻し不要
    WRITE = 1       # 状態を変える。多くは巻き戻せる
    DESTRUCTIVE = 2 # 送信・削除・決済など、巻き戻しにくい
 
# 破壊的とみなす動詞(送ってしまう・消してしまう類)
DESTRUCTIVE = r"(send|delete|remove|purge|archive|pay|charge|transfer|deploy|publish|revoke)"
# 一般的な書き込み動詞
WRITE = r"(create|update|write|edit|insert|upsert|move|rename|set|add|append|patch|put|post)"
# 読み取り動詞
READ = r"(get|list|search|read|fetch|find|query|describe|lookup|view)"
 
def classify(tool_name: str) -> Risk:
    name = tool_name.lower()
    verb = re.split(r"[_\-.]", name)[0]  # 先頭トークンを動詞とみなす
    if re.fullmatch(DESTRUCTIVE, verb):
        return Risk.DESTRUCTIVE
    if re.fullmatch(WRITE, verb):
        return Risk.WRITE
    if re.fullmatch(READ, verb):
        return Risk.READ
    # 動詞が語彙に無ければ、名前全体で破壊的語を探す
    if re.search(DESTRUCTIVE, name):
        return Risk.DESTRUCTIVE
    if re.search(WRITE, name):
        return Risk.WRITE
    # それでも不明なら、READ とは決めつけず WRITE 扱いで拾い上げる
    return Risk.WRITE

破壊的な動詞に paycharge を含めているのは、決済系のコネクタを想定しているからです。たとえば Stripe のような課金コネクタが create_chargerefund を差し出すようになれば、無人ジョブが実際にお金を動かせてしまいます。こうした取り返しのつかない操作こそ、既定で止めて事故を回避したい対象です。

ここで大切にしたのは、最後の一行です。語彙に載っていない未知の動詞を READ と楽観視すると、分類器そのものが抜け穴になります。「分からないものは書き込み以上」に寄せておけば、取りこぼしは過剰検知の側に出ます。過剰検知は私が承認一つで解消できますが、見逃した破壊的ツールは翌朝まで気づけません。どちらの誤りを引き受けるかを、あらかじめ決めておくわけです。

ここまでお読みいただきありがとうございます。

この記事の続きを読む

この先には、実装コードやベンチマーク結果など、実務でお役に立てる内容をご用意しています。このサイトは広告を掲載しておらず、サーバーや開発にかかる費用はメンバーの皆様のご支援で成り立っています。もしお役に立てていましたら、ご支援いただけますと大変ありがたいです。

この記事で得られること
コネクタが公開するツール一覧をスナップショットし、前回との差分から新しく増えた書き込みツールだけを検知する仕組み
ツール名の動詞から read / write / destructive を自動仕分けし、未承認の破壊的ツールを実行前に止める関所コード
「送るつもり・消すつもり」をドライラン台帳に落として翌朝に確認へ回す、無人運用向けの二段構えの実測値
Stripe による安全な決済 · いつでもキャンセル可能

この記事を購入する

この先の内容をすべてお読みいただけます。一度のご購入で、いつでも何度でもアクセスできます。このサイトは広告を掲載しておらず、皆さまのご支援がサーバー費用などの運営を支えています。

または
メンバーシップなら全記事が読み放題 →
シェア

お読みいただきありがとうございます

Claude Lab は広告なしで運営しており、サーバー費用などの運営コストはメンバーシップのご支援で賄っています。実装コード・ベンチマーク・本番設計パターンなど、実務でお役立ていただける記事を毎日更新しています。もし読んでよかったと感じていただけましたら、ぜひご覧ください。

  • コピー&ペーストで使える実装コード付き
  • 毎日新しい上級ガイドを追加
  • ¥580/月 または ¥1,480 の永久アクセス
メンバーシップを見る →

関連記事

Cowork2026-07-05
Claudeが安全上の理由で応答を断ったとき、無人パイプラインは何を返すべきか
エラーでも正常終了でもない第三の結末——安全上の理由でモデルが応答を断った場合の扱いを、無人で回すパイプラインにどう組み込むか。判別コードとレビューキューの設計を、個人開発の実務からまとめます。
Cowork2026-04-29
Cowork mode の Artifacts で「毎朝開く1ページ」を設計する — MCP連携で生きたダッシュボードを作る方法
Cowork mode のArtifactsは、再現可能な情報源を持つ「生きたページ」を生み出します。MCP連携で毎朝の確認業務を1クリックに集約する設計手順と落とし穴を、実例付きで解説します。
Cowork2026-04-09
デザインシステムをClaude Skillsとして実装する:kintone事例に学ぶAI対応ドキュメント設計
サイボウズのkintone Design SystemをClaude Agent Skillsとして提供した事例を参考に、デザインシステムをAIが読めるSkillsとして実装する方法を詳しく解説します。MCPとの違い、SKILL.mdの設計原則、ドキュメント構造の最適化まで網羅。
📚RECOMMENDED BOOKS
大規模言語モデル入門
山田育矢
LLM開発
生成AIプロンプトエンジニアリング入門
我妻幸長
プロンプト
Claude CodeによるAI駆動開発入門
平川知秀
AI駆動開発
※ アフィリエイトリンクを含みます
もっと見る →