Skip to content

原文(日本語に翻訳)

スキルの許可ツールリストに AskUserQuestion などのインタラクティブツールが記載されていた場合、パーミッションプロンプトをバイパスして空の回答で自動実行されていた問題を修正しました

原文(英語)

Fixed interactive tools (e.g., AskUserQuestion) being silently auto-allowed when listed in a skill's allowed-tools, bypassing the permission prompt and running with empty answers

概要

スキル定義の allowed-tools リストに AskUserQuestion などのインタラクティブツール(ユーザーへの入力を必要とするツール)が記載されていた場合、本来はユーザーへの確認プロンプトが表示されるべきですが、それをバイパスして空の回答で自動実行されてしまうバグがありました。修正後はインタラクティブツールは常に適切な確認プロンプトを表示するようになります。

基本的な使い方

この修正はセキュリティ上重要です。自動的に適用されます。

bash
# インタラクティブツールが正しく確認プロンプトを表示するようになった
# スキルの allowed-tools に AskUserQuestion が含まれていても
# 空の回答で自動実行されることはない

実践例

問題のあったスキル定義

markdown
<!-- .claude/commands/deploy.md -->
---
allowed-tools: [Bash, Edit, AskUserQuestion]
---

# デプロイコマンド

デプロイ環境を確認してからデプロイを実行します。

1. AskUserQuestion でデプロイ先環境を確認
2. Bash でデプロイスクリプトを実行
修正前の問題:
  /deploy を実行

  AskUserQuestion が allowed-tools にあるため「許可済み」と判断

  ユーザーへの確認なしに空の回答で実行

  デプロイ先環境が空白のまま実行される(意図しない動作)

修正後:
  /deploy を実行

  AskUserQuestion が起動

  「デプロイ先環境を入力してください:」とユーザーへの確認を表示

  ユーザーの入力を受け取って処理

インタラクティブツールの正しい動作

インタラクティブツールの例:
- AskUserQuestion: ユーザーへの質問
- ConfirmAction: アクションの確認

これらのツールは常にユーザーの入力を必要とします:
→ allowed-tools に記載されていても自動実行されない(修正後)
→ 必ずユーザーへの確認プロンプトが表示される

セキュリティ上の意義

この修正が重要な理由:
1. デプロイ先の誤った指定を防止
2. 重要なアクションの前に必ずユーザー確認を取る
3. スキル定義の allowed-tools が過度な自動実行の抜け穴にならない
4. ユーザーの意図しない操作を防止

注意点

  • AskUserQuestion を使用するスキルは必ずユーザーの入力を待つようになります
  • 既存のスキルでこの変更による動作の変化が生じる可能性があります
  • 完全自動化したい場合は AskUserQuestion ではなく、事前にパラメータを受け取る設計にしてください
  • インタラクティブツールは定義上、ユーザーインタラクションを必要とするものです

関連情報