# Claude Code での GPG 署名トラブルシューティング
Table of Contents
問題
Claude Code から git commit を実行すると GPG 署名に失敗する。
error: gpg failed to sign the data:gpg: cannot open `/dev/tty': Device not configuredfatal: failed to write commit object原因
-
Claude Code は TTY を持たない環境で実行される
ttyコマンド →not a tty- GPG がパスフレーズ入力のために
/dev/ttyを開こうとして失敗
-
GPG Suite が古いバージョンだった
- gpg 2.0.30 (2015年)
- pinentry-mac 0.9.7 (2016年)
- 現在の macOS との互換性に問題
-
pinentry-mac のダイアログが表示されなかった
- パスフレーズがキャッシュされていない
- Keychain にも保存されていない
解決策
1. GPG Suite を最新版に更新
# 古いバージョンの確認gpg --version# gpg (GnuPG/MacGPG2) 2.0.30 ← 古い!
# 公式アンインストーラーで削除# https://gpgtools.tenderapp.com/kb/faq/uninstall-gpg-suite
# brew で最新版をインストールbrew install --cask gpg-suite
# 新しいバージョンの確認gpg --version# gpg (GnuPG/MacGPG2) 2.2.41 ← 新しい!Note: インストール後、「ログイン項目と機能拡張」に shutdown-gpg-agent が追加される。これは macOS シャットダウン時に gpg-agent を安全に終了させるためのもの。そのまま有効にしておく。
2. パスフレーズを Keychain に保存
# ターミナルで署名テストを実行echo "test" | gpg --clearsign > /dev/nullpinentry-mac のダイアログが表示されたら:
- パスフレーズを入力
- 「Save in Keychain」にチェック ← 重要!
3. 動作確認
# Claude Code から git commit を実行git commit -m "test commit"
# 署名を確認git log --show-signature -1# gpg: "Your Name <email>"からの正しい署名 [究極]ポイント
| 設定 | 説明 |
|---|---|
~/.gnupg/gpg-agent.conf | gpg-agent の設定ファイル |
default-cache-ttl | パスフレーズのキャッシュ時間(秒) |
pinentry-program | パスフレーズ入力プログラムのパス |
| Save in Keychain | macOS Keychain に永続保存(再起動後も有効) |
gpg-agent.conf の例
default-cache-ttl 28800max-cache-ttl 86400pinentry-program /usr/local/MacGPG2/libexec/pinentry-mac.app/Contents/MacOS/pinentry-mac便利なコマンド
# GPG バージョン確認gpg --version
# キャッシュされた鍵を確認gpg-connect-agent 'keyinfo --list' /bye
# gpg-agent を再起動gpgconf --kill gpg-agentgpgconf --launch gpg-agent
# コミットの署名を確認git log --show-signature -1
# git の GPG 設定確認git config --global commit.gpgsigngit config --global user.signingkey環境
- macOS (Sequoia 15.7, Darwin 24.6.0)
- GPG Suite 2023.3 (via Homebrew)
- gpg 2.2.41
- Claude Code