
Kiro Crew でエージェントに CloudFormation 操作を拒否されたのでセキュリティ設定を変更してみた
いわさです。
Kiro Crew でエージェントに AWS CloudFormation の create-stack を実行させると、デフォルトでは Kiro Crew のセキュリティ設定で拒否されます。これは Kiro CLI や IDE とは別で入っているセキュリティ設定なので最初戸惑うかもしれません。
先日ダッシュボードのセキュリティ設定から一部のコマンド制限を無効化して実行できるようにしてみたので紹介します。
ちなみに今回は CloudFormation でしたが、S3 の削除やアップロード系も初期状態でいくつか拒否されており、Kiro Crew デフォルトでは破壊的な操作になり得るコマンドは広めにブロックされているようです。
create-stack が拒否された
Kiro と対話しながら検証用の CloudFormation テンプレートとスタックを作ろうとしたのですが、いざエージェントに create-stack を実行させると「出来ません」と言い出しました。
エージェントのツール定義は全部 OK にしてますし、対話上も YOLO モードなのにです。
ツール結果には User denied tool execution と出ますが、自分で拒否ボタンを押したわけでもありません。
ホストの通知には次のようなメッセージが出ていました。
Blocked by security policy: aws...cloudformation...(create-stack|deploy|update-stack|create-change-set|execute-change-set)...
create-stack を含む CloudFormation 操作がまとめてブロックされています。
Kiro Crew 最近使い始めたところであまり知らなかったのですが、Kiro Crew 上の仕組みで上記操作が制限されています。
セキュリティ設定で該当ルールを無効化する
エージェント定義ファイル ~/.kiro/agents/iwasa-blog-writer.json には toolsSettings も deniedCommands もありません。
定義側に拒否ルールがないのにブロックされているので、これはエージェント定義ではなく KiroCrew 側が持っているブロック設定によるものです。
公式ドキュメントにも、拒否されたコマンド(Denied commands)は KiroCrew 側でブロックしていて、エージェント定義を編集しても無効化できないと記載があります。
Denied commands are enforced at Crew's own tool gate, not inside the agent config. Editing a kiro-cli agent config cannot weaken these rules.
無効化はエージェント定義ではなく、ダッシュボードのセキュリティ設定で行うようです。
Manage from Settings → Security — you can disable individual rules, disable all rules, or add your own custom patterns.
ということでやってみましょう。
ダッシュボードの 設定 > セキュリティ > 拒否されたコマンド を開きます。

AWS の破壊的操作だけでなく、認証情報の抜き取りや機密ファイルの読み取りなども組み込みで用意されています。
検索コントロールでキーワードで絞り込みできるので、ここで cloudformation と入れて絞り込んでみます。

create-stack は deploy・update-stack・create-change-set・execute-change-set とまとめて 1 つのルールに入っているのがわかります。
create-stack を含むルールと delete-stack 系のルールをトグルオフしてみましょう。
操作すると、確認ダイアログが出ました。

。
チェックを入れて確定すると、トグルがオフになります。

なるほどね。
無効化後に create-stack を実行する
無効化した状態で、同じ create-stack をエージェントに実行させると、今度は成功してデプロイが始まりました。
エージェント定義は変えておらずゲートウェイやセッションの再起動もしていません。即反映されるみたいですね。
さいごに
本日は KiroCrew でエージェントに拒否された cloudformation create-stack を、セキュリティ設定から無効化して実行できるようにするところまで確認しました。
拒否はエージェント定義では無効化できず、ダッシュボードのセキュリティ設定でルール単位に無効化する必要がありました。
セキュリティの問題もあるので何でも無効化すれば良いわけじゃないのですが、必要な時だけオフにして終わったらオンに戻すとかする想定なのかなこの UI は。









