Zenn Vetol Bash Ast Checker
Coding Agentのコマンド実行をBash ASTベースで検査するツール「Vetol」を作った
- URL: https://zenn.dev/tf63/articles/vetol-tf63-20260610
- 日付: 2026-06-10
- Tier: Tier 3
- 要旨: Claude CodeのPreToolUse Hookを活用し、Bash ASTを解析してコマンド置換・論理演算子内のコマンドも含めた安全な検査を行うGoツール「Vetol」を公開。文字列マッチやprefixベースのパターンでは回避可能だった
git push -f系コマンドのバイパスを防ぐ。
詳細
従来手法の問題点:
- Prefixベース:
git push -f origin mainは止められてもgit push -uf origin mainやgit push -u -f origin mainは通過 - 正規表現ベース:
rm -rfを検出してもrm -frはバイパス可能 - コマンド置換・論理演算子内を検査できない
Vetolのアプローチ:
echo $(git push -f origin main) && rm -rf / のようなコマンドからASTを解析して全コマンド(echo、git push -f origin main、rm -rf /)を抽出し、それぞれに対してallowlist/denylistルールを適用する。
ルールはJSON形式:
{
"mode": "allowlist",
"rules": [
{"command": "ls"},
{"command": "cp", "include": ["-n"]}
]
}include/excludeフィールドで特定フラグ・引数の有無による条件も指定可能。
インストール:go install github.com/tf63/vetol/cmd/vetol@latest