workflowKeywordTriggerEnabledでultracode起動を止める
プロンプト中のultracodeという単語だけでワークフローが起動する既定動作を、設定キー1つで止める方法とその影響範囲。
このTipsでできること
Claude Codeのプロンプトにultracodeという単語を打つと、Claudeがそのタスク向けのワークフローを自動で計画し始めます。意図せずultracodeという文字列を含む指示を書いただけで起動することがあります。workflowKeywordTriggerEnabledをfalseにすると、この単語トリガーだけを止められます。
やり方
既存のsettings.jsonに次の1行を追記します(ファイルが無ければ新規作成します)。
{
"workflowKeywordTriggerEnabled": false
}既定値はtrueです。スコープはAny fileで、ユーザー設定・プロジェクト設定のどこに書いても反映されます。/configの画面では「Ultracode keyword trigger」という項目名で表示され、GUIからトグルすることもできます。
設定から反映確認まで
- 1
settings.jsonに1行足す
書き込み先は
~/.claude/settings.json(自分だけ)か、リポジトリの.claude/settings.json(チーム全員)です。 - 2
新しいセッションで試す
ultracodeという単語だけを含む短いプロンプトを送ります。ワークフローの計画が始まらなければ反映されています。 - 3
今回だけ止めたいときは設定を触らない
キーワードがハイライトされたら、macOSは
Option+W、Windows・LinuxはAlt+Wでそのプロンプト分のハイライトを解除できます。ハイライトの直後にカーソルがあるなら、Backspaceでも取り消せます。
毎回falseにしておくのは、CLAUDE.mdの説明文などで恒常的にultracodeという語を書く運用のときです。たまに誤って反応する程度なら、Option+W/Alt+Wのその場しのぎで足ります。
キーワードが決めるのは「構成」だけ
キーワードで起動したワークフローは、権限の面では普通のセッションと同じ扱いです。ワークフローの中でエージェントが呼ぶツールにも、通常のツール呼び出しと同じ権限チェックとサンドボックスがかかります。ultracodeと書いたからといって、許可の範囲が広がるわけではありません。
Claude Code v2.1.289でclaude --helpを実行すると、--effortの説明は次のように表示されます。
claude --help | grep -A1 -e "--effort" --effort <level> Effort level for the current session
(low, medium, high, xhigh, max)--helpの候補は5段階で、ultracodeは並びません。一方、公式のワークフローのページでは、claude --effort ultracodeでセッションをultracode付きで始められるとされています(v2.1.203以降)。この起動時フラグはエフォートもxhighにする点で/effort ultracodeと違い、単語トリガーとは別の経路です。workflowKeywordTriggerEnabledをfalseにしても影響しません。
どこで効くか — 対話プロンプト以外では元々起動しない
このキーワードトリガーは、人間が直接タイプした対話プロンプトでしか働きません。次の経路で届いた文字列は、ultracodeを含んでいてもワークフローを起動しません。
キーワードが反応しない4つの経路
-pフラグ
claude -pに渡したプロンプトです。人間の入力と宣言されていないSDK入力
originを人間の入力としてスタンプしていないAgent SDKアプリケーションからの入力です。スケジュールされたタスク
スケジュール実行のプロンプトです。
中継された外部の文章
Webhookのペイロードや、プルリクエストのコメントから会話に中継された内容です。
CIパイプラインやAgent SDK経由の自動化にultracodeを含む文字列が流れても、それだけで暴発することはありません。暴発が起きるのは、CLI・IDE拡張のパネル・Remote Controlクライアントなど、自分でキーボード入力する経路に限られます。
例外は古いバージョンです。v2.1.210より前では、Webhookのペイロードやプルリクエストのコメント経由でもキーワードが反応していました。それより古いClaude Codeを使っているなら話が変わります。workflowKeywordTriggerEnabled: falseは、自動化経路からの暴発を防ぐ意味も持ちます。
このキーはv2.1.157で、語「workflow」による起動を止める/config項目として追加されました。トリガーの語はv2.1.160でworkflowからultracodeに変わったので、それより古い環境では「workflow」が反応します。
誤爆したときにどこまで進むか — 権限モード次第
キーワードが暴発しても、必ず即座に実行が始まるわけではありません。ワークフローが走り出す前の承認ダイアログは、権限モードによって出方が変わります。
| 権限モード | 誤爆時の挙動 |
|---|---|
| Manual(accept edits含む) | 誤爆時の挙動実行のたびに承認プロンプトが出る。「Yes, and don't ask again」で省けるのは、保存済み・同梱のワークフローを名前で実行する場合に限る |
| Auto | 誤爆時の挙動初回のみプロンプト。一度Yesを選ぶと以後は聞かれない。ultracodeがオンならプロンプト自体が出ない |
| Bypass permissions | 誤爆時の挙動プロンプトなしで即座に実行が始まる |
claude -p / Agent SDK | 誤爆時の挙動プロンプトは出ない。Workflowの許可ルール、Autoモード、Bypassのいずれかが起動を通す |
Bypassモードで作業している場合や、Autoモードで一度「今後は聞かない」を選んだ後は、ultracodeを含むプロンプトを送っただけで確認なしにワークフローが走り出します。こうした運用なら、単語トリガー自体を切っておく価値が特に大きくなります。
送信前に気づく手掛かりはハイライトです。ただし長いプロンプトを貼り付けたとき、途中に紛れ込んだ語は見落としやすくなります。そういう運用では設定で根本から止める方が確実です。
なぜ暴発を止めたいのか — ワークフローは軽くない
ワークフローが起動すると、1回のリクエストのつもりが多数のサブエージェントを並列で走らせるタスクに変わります。Claude Codeは、規模が大きい実行にだけLarge workflowの警告を出します。
Large workflowの警告が出る条件
エージェント数
25超
サイズ指針を自分で選ぶと、その上限が25の代わりになる
トークン見積もり
150万超
どちらか一方を超えると表示
警告が出ない場合もあります。ultracodeがオンのセッションでは、大規模な実行をあらかじめ受け入れているものとして警告自体が出ません。単語で誤爆した実行も、規模が閾値を超えれば警告が出ます。ただしultracodeオンのセッションでは、大きくなっても警告は出ません。
ワークフローはClaudeサブスクリプションの利用上限にもそのまま計上されます。意図しない起動が積み重なると、セッションや週次の上限に早く達する原因になります。実行中の様子は/workflowsで見られ、そこから止められます。
このキーが止めるのは「単語トリガー」だけ
workflowKeywordTriggerEnabledが制御するのは、ultracodeという単語をきっかけにした起動だけです。次の3つは影響を受けません。
/effort ultracode: そのセッションだけワークフローの自動編成をオンにする機能です。v2.1.284以降は、オンにしてもエフォートの段は変わりません/workflowsコマンド: 明示的にワークフローを呼び出す操作です- 保存済みのワークフローコマンド: 作成済みのワークフローの実行です
「ワークフローを使って」「run a workflow」のように自分の言葉で頼んだ場合も、Claudeはultracodeと書いたときと同じopt-inとして扱います。このキーをfalseにしても、自然文での依頼までは止まりません。
ダイナミックワークフローが使えるのは、有料プランとAnthropic APIアクセスです。Amazon Bedrock、Google CloudのAgent Platform、Microsoft Foundryでも使えます。Proプランでは、/configの「Dynamic workflows」行からオンにする必要があります。単語トリガーを切っても、この利用資格には影響しません。
隣接する設定キーとの違い
ダイナミックワークフローに関わる設定キーは複数あり、混同すると意図と違う挙動になります。
| 設定キー | 止める対象 | 適用範囲 |
|---|---|---|
workflowKeywordTriggerEnabled | 止める対象ultracodeという単語での自動起動のみ | 適用範囲書いた設定ファイルが効く範囲 |
disableWorkflows | 止める対象ダイナミックワークフローと同梱のワークフローコマンド全体 | 適用範囲~/.claude/settings.jsonなら自分、管理設定なら組織全員 |
enableWorkflows | 止める対象/configの「Dynamic workflows」トグルが書く自分用のオン・オフ | 適用範囲自分のユーザー設定(セッションをまたいで持続) |
ultracode | 止める対象セッション開始時にultracodeをオンにするか(エフォートの段は変えない。モデルがxhighに対応しているときだけ実際にオンになる) | 適用範囲セッション開始時の既定挙動 |
単語での暴発を防ぎたいだけなら、機能全体を止めるdisableWorkflowsより、このキーの方がピンポイントです。管理設定に書いたdisableWorkflowsは、届く全員に効きます。
ワークフロー機能は残し、ultracodeのセッション設定だけ避けたいなら、セッションごとに/effort ultracode offでオフにできます。v2.1.284より前は、ultracodeをオンにするとエフォートがxhighに固定されていました。以降はキャップを下げても、ultracodeはオフになりません。
セッション単位で一時的に止めたいだけなら、環境変数CLAUDE_CODE_DISABLE_WORKFLOWS=1もあります。起動時に読み込まれるので、設定した場所を問わずそのセッションに効きます。disableWorkflowsと、どちらか一方が無効化していれば、enableWorkflowsで戻すことはできません。ワークフローの実行そのものについては、プロンプトキャッシュの効き方で扱っています。
disableWorkflowsは、CLI・デスクトップアプリ・IDE拡張・claude -p・Agent SDKのすべてで同じ無効化設定が効き、面ごとの個別切り替えはありません。止めると、同梱のワークフローコマンドと/workflow-authoringスキルが使えなくなり、/effortのメニューからultracodeの選択肢も消えます。実行中のワークフローは、止めた後も最後まで続きます。
この設定が効く場面
ultracodeは、ワークフロー機能の紹介記事やCLAUDE.mdの説明文など、機能名としてそのまま書きたい場面が少なくありません。CIログや社内ドキュメントを対話プロンプトに貼り付けて要約を頼むときも、単語トリガーが働けば説明のつもりの文章でワークフローが計画され始めます。
チームのCLAUDE.mdに機能名の解説を書く運用なら、リポジトリ直下の.claude/settings.jsonに書いてコミットします。メンバー全員の環境で暴発を防げます。個人の癖として頻発するなら、~/.claude/settings.jsonに書く方が影響範囲を自分だけに絞れます。
同じsettings.jsonで挙動を絞る設定は、ほかにもあります。確認プロンプトを省くautoAllowBashIfSandboxedでBash確認をスキップする条件と無効化や、コネクタを止めるdisableClaudeAiConnectorsでClaude Codeのコネクタを一括無効化です。
ワークフローの規模も絞りたいなら
単語トリガーを止めても、自然文での依頼や/effort ultracodeでワークフローは走ります。規模そのものを抑えたい場合はworkflowSizeGuidelineが使えます。値はunrestricted(目安なし)・small(エージェント5未満)・medium(10未満)・large(50未満)の4つで、既定はmediumです。
Proプランでv2.1.271以降なら、既定がsmallになります。workflowSizeGuidelineの設定キーにはv2.1.219以降が必要で、それより前では既定がunrestricted(目安なし)です。目安は助言であって上限ではなく、依頼が別の規模を求めれば上書きされます。
{
"workflowKeywordTriggerEnabled": false,
"workflowSizeGuideline": "small"
}まとめ
どの設定にするかは、ultracodeという語をCLAUDE.mdやチーム文書に書く運用があるかで決まります。書くなら、リポジトリの.claude/settings.jsonにworkflowKeywordTriggerEnabled: falseをコミットしておくと、メンバー全員の環境で語が反応しなくなります。
参照した一次ソース
この記事の記述は、次の一次ソースと照合しています。更新時に参照先が変わった場合は一覧も更新します。