---
title: "Codexの作業でGPG署名を利用する"
url: "https://blog.101ta28.com/posts/use-gpg-signing-with-codex/"
language: "ja"
description: "CodexでGit作業する際に、pinentry-qtを使ってGPG署名付きコミットを維持する設定メモ。"
---

# Codexの作業でGPG署名を利用する

> CodexでGit作業する際に、pinentry-qtを使ってGPG署名付きコミットを維持する設定メモ。

## CodexとGPG署名

普段のGit作業では、コミットにGPG署名を付けるようにしている。  
深い理由はない。  
GitHubのコミット履歴にVerifiedがあると嬉しいからだ。

```bash
git config --global commit.gpgsign true
```

この設定自体は良いのだが、CodexにGit作業を任せる時に少し困ることがあった。  
コミットを作成する段階でGPGのパスフレーズ入力が必要になり、そこで署名に失敗する。  
最初は署名キャンセルでコミットしていたが、気持ち悪さを感じたので対策することにした。

## pinentry-qtを使う

GPGのパスフレーズ入力には`pinentry`が使われる。  
CLIで入力するものもあれば、GUIで入力ダイアログを出すものもある。

CodexにGitコマンドを実行させる時、ターミナル上の入力待ちをうまく扱えない場面がある。  
そのためGUIの入力ダイアログを出せる`pinentry-qt`を指定することにした。

Ubuntuであれば、まず`pinentry-qt`を入れる。

```bash
sudo apt install pinentry-qt
```

その後、`~/.gnupg/gpg-agent.conf`に`pinentry-program`を設定する。

```bash
vim ~/.gnupg/gpg-agent.conf
```

中身は以下のようにする。

```txt
pinentry-program /usr/bin/pinentry-qt
```

設定を反映するため、GPG Agentを再読み込みする。

```bash
gpg-connect-agent reloadagent /bye
```

うまく反映されない場合は、Agentを一度killしてもよい。

```bash
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を呼び出す設定を書いた。

[VSCodeでGPG署名付きコミットを可能にする](/posts/vscode-enable-gpg-signed-commits/)

今回はCodexからGit作業する時の話なので、Linux側で`pinentry-qt`を使う方針にしている。

## 関連記事

- [VSCodeでGPG署名付きコミットを可能にする]({{< ref "posts/vscode-enable-gpg-signed-commits" >}})  
  VSCodeとWSLでGPG署名付きコミットを行うための設定メモ。
- [ブリリアントジャークより愛されるエンジニアを目指そう]({{< ref "posts/beloved-engineer-over-brilliant-jerk" >}})  
  AIと協働するエンジニア像について考えた記事。
- [専門外でも創れる時代: AIと意欲駆動開発の可能性]({{< ref "posts/ai-and-passion-driven-development-for-non-experts" >}})  
  AI時代の開発と、エンジニアの役割について。
