Noriyo Akita's Today I Learned

# 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 configured
fatal: failed to write commit object

原因

  1. Claude Code は TTY を持たない環境で実行される

    • tty コマンド → not a tty
    • GPG がパスフレーズ入力のために /dev/tty を開こうとして失敗
  2. GPG Suite が古いバージョンだった

    • gpg 2.0.30 (2015年)
    • pinentry-mac 0.9.7 (2016年)
    • 現在の macOS との互換性に問題
  3. pinentry-mac のダイアログが表示されなかった

    • パスフレーズがキャッシュされていない
    • Keychain にも保存されていない

解決策

1. GPG Suite を最新版に更新

Terminal window
# 古いバージョンの確認
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 に保存

Terminal window
# ターミナルで署名テストを実行
echo "test" | gpg --clearsign > /dev/null

pinentry-mac のダイアログが表示されたら:

  • パスフレーズを入力
  • 「Save in Keychain」にチェック ← 重要!

3. 動作確認

Terminal window
# Claude Code から git commit を実行
git commit -m "test commit"
# 署名を確認
git log --show-signature -1
# gpg: "Your Name <email>"からの正しい署名 [究極]

ポイント

設定説明
~/.gnupg/gpg-agent.confgpg-agent の設定ファイル
default-cache-ttlパスフレーズのキャッシュ時間(秒)
pinentry-programパスフレーズ入力プログラムのパス
Save in KeychainmacOS Keychain に永続保存(再起動後も有効)

gpg-agent.conf の例

default-cache-ttl 28800
max-cache-ttl 86400
pinentry-program /usr/local/MacGPG2/libexec/pinentry-mac.app/Contents/MacOS/pinentry-mac

便利なコマンド

Terminal window
# GPG バージョン確認
gpg --version
# キャッシュされた鍵を確認
gpg-connect-agent 'keyinfo --list' /bye
# gpg-agent を再起動
gpgconf --kill gpg-agent
gpgconf --launch gpg-agent
# コミットの署名を確認
git log --show-signature -1
# git の GPG 設定確認
git config --global commit.gpgsign
git config --global user.signingkey

環境

  • macOS (Sequoia 15.7, Darwin 24.6.0)
  • GPG Suite 2023.3 (via Homebrew)
  • gpg 2.2.41
  • Claude Code

参考

My avatar

Thanks for reading my blog post! Feel free to check out my other posts or contact me via the social links in the footer.


More Posts

# 【書籍レビュー】ソフトウェアエンジニアガイドブック

15 min read

毎日コードを書き、ミーティングに参加し、チームの課題解決に奔走する。ソフトウェアエンジニアとしての日々は、非常に忙しいものです。しかし、その忙しさの中で、「自分の仕事は本当にインパクトを与えているのだろうか?」「自分の貢献は、上司や会社から正当に評価されているのだろうか?」と、ふと不安に思うことはありませんか?多くのエンジニアが、自分の働きが「見えにくい」ことに悩んでいます。

Read