Skip to content

原文(日本語に翻訳)

heredocのコミットメッセージを含む複合bashコマンドに対して、誤ってパーミッションプロンプトが表示される偽陽性の問題を修正しました。

原文(英語)

Fixed false-positive permission prompts for compound bash commands containing heredoc commit messages

概要

git commitのメッセージをheredoc(<<EOF形式)で記述した複合bashコマンドに対して、Claude Codeが誤ってセキュリティ上の懸念があると判断し、パーミッションの確認プロンプトを表示してしまう問題が修正されました。heredocはgitコミットメッセージの標準的な記述方法であり、本来はパーミッション確認の必要がありません。修正後は正当なheredocコミットメッセージを含むコマンドに対して不要なプロンプトが表示されなくなります。

基本的な使い方

この修正はv2.1.71以降で自動的に適用されます。heredocを使用したgitコミットコマンドがスムーズに実行できるようになります。

bash
# heredocを使用したgitコミット(修正後は不要なパーミッション確認なし)
git commit -m "$(cat <<'EOF'
feat: 新機能を追加

詳細な説明をここに記述
Co-Authored-By: Claude <noreply@anthropic.com>
EOF
)"

実践例

Claude Codeが生成するgitコミット

Claude Codeがコミットを作成する際に使用するheredoc形式が正常に動作します。

bash
# Claudeにコミットを依頼
> これらの変更をコミットしてください

# Claude が実行するコマンド(以前は不要なパーミッション確認が発生していた)
git add src/feature.ts
git commit -m "$(cat <<'EOF'
feat: ユーザー認証機能を追加

- JWTトークンによる認証を実装
- ログイン/ログアウト機能を追加
- セッション管理を強化

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
EOF
)"
# 修正後: パーミッション確認なしに実行される

複数行のコミットメッセージ

詳細な説明を含む複数行のコミットメッセージを持つコミット。

bash
# 複数行のコミットメッセージ
git commit -m "$(cat <<'EOF'
fix: データベース接続プールの設定を修正

問題: 高負荷時に接続が枯渇する問題が発生していた
原因: 最大接続数の設定が不適切だった
対策: 接続プールの最大サイズを20から100に変更し、
      タイムアウト設定を最適化した

Closes #123
EOF
)"

自動化スクリプトでのheredocコミット

CI/CDパイプラインや自動化スクリプトでheredocコミットを使用する場合。

bash
# 自動化スクリプト内でのheredocコミット
VERSION="1.2.3"
git commit -m "$(cat <<EOF
chore: バージョンを${VERSION}に更新

自動リリーススクリプトによる更新
EOF
)"

注意点

  • この修正はheredocを含む複合bashコマンドの誤検知を解消するものです。
  • 実際に危険なコマンドに対するパーミッション確認は引き続き正常に機能します。
  • CLAUDE.mdの「コミットルール」に従い、heredocを使用したコミットメッセージ形式が推奨されています。
  • --no-verifyフラグや--forceフラグなど、実際に注意が必要なフラグを含むコマンドに対するパーミッション確認は維持されます。

関連情報