Skip to main content
Glama

unblock

エージェントがあなたから必要とするすべてを扱う単一のキュー。

人間にしか越えられない壁 — APIキー、コンソールでのクリック、OAuthの許可、承認 — にぶつかったエージェントは、構造化された依頼を登録し、作業を続けるかパークします。1つのページで、シークレットも含めてそれらをまとめて回答できます。すると、パークされていたエージェントが目を覚まします。

エージェントが何を望んでいたのかを知るために、トランスクリプトを読む必要はもうありません。

なぜ存在するのか

エージェント向けのヒューマン・イン・ザ・ループ・ツールは、どれもこの問題の3分の1しか解決していません。LangGraphのinterrupt()は正しい待機セマンティクスを持っていますが、キューもUIも付属していません。HumanLayerとgotoHumanは構造化されたリクエストを持ち、SaaS経由でルーティングします。ローカルのMCP質問サーバーはシングルエージェントで同期型であり、回答をツール結果としてそのまま返します — これはまさにAPIキーが決して渡ってはいけない場所です。

unblockはこの3つを兼ね備えています:ローカルファースト、モデルのコンテキストに入らないシークレット、そしてマシン上のすべてのエージェントにわたる単一のキュー。

Related MCP server: human-loop-mcp

仕組み

2つの呼び出しがありますが、エージェントを停止させるのはそのうちの1つだけです。

呼び出し

ブロックする?

同時実行数

unblock_file

いいえ — チケットを返し、エージェントは作業を続ける

無制限

unblock_park

はい — 回答されるまで待機する

エージェントごとに1つ

このたった一つの制約が、部分的な回答を安全にしているのです。登録済みの依頼に回答しても何も中断されないため、どの順序でも回答できます。パークされた依頼に回答するとエージェントが目を覚まし、その間に届いた登録済みの回答をすべて収集します。

3つのものを必要とするエージェントは、3つのフィールドを持つ1つのパークを宣言します。停止できるのは1か所だけなので、3回パークすることはありません。

シークレット

フォームに入力されたシークレットは、モデルのコンテキストに入るチャネルを通って戻ることは決してありません。デーモンはそれを保存し、エージェントに参照を渡します:

op://Private/abc123/credential        # 1Password — masks the value if printed
ub_9cjp4t-stripe_key                  # macOS keychain
$UNBLOCK_STRIPE_KEY                   # env file, 0600

エージェントは必要な時点でそれを解決し、決して出力しません。opにサインインしている場合は1Passwordが推奨されます。op runは、サブプロセスが値をエコーしても値をマスクするためです — その保護機能を持つ唯一のバックエンドです。

インストール

npm install -g unblockd         # daemon, MCP server, CLI (binary: unblock)
unblock daemon start

次に、エージェントにそれを向けます。Claude Codeの場合:

claude mcp add unblock -- npx unblockd mcp

そして、エージェントがいつパークすべきかを知るためにスキルをインストールします:

npx skills add aneym/unblock --skill unblock -g

herdr

herdr plugin install aneym/unblock --yes

alt+p uでunblockモードが開きます:アクティブなプロファイルにスコープされた、キュー全体を表示する拡大ペインで、その場で回答できます。回答すると、ペイン内のエージェントが目を覚まします。

このプラグインは、herdrがブロックされていると検出したものの、依頼を宣言しなかったエージェントも一覧表示します — 宣言済みのエージェントの下に表示されるため、黙って停止している場合も確認できます。

スマートフォンからの回答

unblock linkは一時的なURLを発行します。送信すると失効し、タイマーでも期限切れになるため、ポケットの中の古いタブが翌日もまだ生きているということはありません。自分のtailnet経由で配信するか、tailnetがない場合はクイックトンネルを使います:

tailscale serve --https=8799 127.0.0.1:4488     # tailnet only
cloudflared tunnel --url http://127.0.0.1:4488  # no account

構成

src/schema.js    ask + field validation, the profile rule
src/store.js     SQLite queue, one-park-per-agent, drafts, links
src/secrets.js   1Password -> keychain -> env file
src/daemon.js    HTTP API, the answer page, SSE
src/mcp.js       MCP server: file / park / check / cancel
web/             the answer page
plugin/          herdr plugin
skills/unblock/  the discipline agents follow before parking

npm依存関係はゼロです。キューは~/.local/state/unblock/queue.dbにある単一のSQLiteファイルです。

ライセンス

MIT

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables AI agents to ask clarification questions and receive structured user input through a Human-in-the-Loop interface.
    1
    MIT
  • A
    license
    B
    quality
    D
    maintenance
    Enables AI agents to ask human operators questions through polished browser dialogs, supporting text/choice/confirmation inputs and file attachments.
    7
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables AI agents to request human decisions for subjective or high-stakes choices through MCP tools like ask_human and provision_api_key.
    -
  • A
    license
    Not graded
    quality
    C
    maintenance
    Provides durable queues, human-in-the-loop approval gates, and an audit trail for AI agent fleets, enabling blocking approval requests and reliable work handoffs.
    6 npm
    MIT