CodexとGPG署名
普段のGit作業では、コミットにGPG署名を付けるようにしている。
深い理由はない。
GitHubのコミット履歴にVerifiedがあると嬉しいからだ。
git config --global commit.gpgsign true
この設定自体は良いのだが、CodexにGit作業を任せる時に少し困ることがあった。
コミットを作成する段階でGPGのパスフレーズ入力が必要になり、そこで署名に失敗する。
最初は署名キャンセルでコミットしていたが、気持ち悪さを感じたので対策することにした。
pinentry-qtを使う
GPGのパスフレーズ入力にはpinentryが使われる。
CLIで入力するものもあれば、GUIで入力ダイアログを出すものもある。
CodexにGitコマンドを実行させる時、ターミナル上の入力待ちをうまく扱えない場面がある。
そのためGUIの入力ダイアログを出せるpinentry-qtを指定することにした。
Ubuntuであれば、まずpinentry-qtを入れる。
sudo apt install pinentry-qt
その後、~/.gnupg/gpg-agent.confにpinentry-programを設定する。
vim ~/.gnupg/gpg-agent.conf
中身は以下のようにする。
pinentry-program /usr/bin/pinentry-qt
設定を反映するため、GPG Agentを再読み込みする。
gpg-connect-agent reloadagent /bye
うまく反映されない場合は、Agentを一度killしてもよい。
gpgconf --kill gpg-agent
この状態でCodexにコミットを作らせると、GPGのパスフレーズ入力がGUIで表示される。
結果として、commit.gpgsignをfalseにせず、署名付きコミットを維持したまま作業できる。
補足
WSL環境の場合、GUIを表示できる状態になっている必要がある。
Windows 11のWSLgを使っている場合は、そのまま動くことが多いと思う。
また、GPGの設定は環境差が大きい。
既にgpg-agent.confに別のpinentry-programを書いている場合は、既存設定を上書きする前に確認した方がよい。
以前、VSCodeでGPG署名付きコミットを行うために、Windows側のPinentryを呼び出す設定を書いた。
今回はCodexからGit作業する時の話なので、Linux側でpinentry-qtを使う方針にしている。