The plugin runs `gpgconf --list-options gpg-agent` on every shell start to learn whether `enable-ssh-support` is set. On macOS with GnuPG 2.5.24 that one command takes about 600 ms. The `ssh-support` style lets the user state the answer instead. With `no` the plugin sets `GPG_TTY` and stops. That also skips the preexec hook, which runs `gpg-connect-agent updatestartuptty` before every command and is only needed for ssh support. With `yes` the plugin sets `SSH_AUTH_SOCK` without asking. Left unset, the plugin detects as before, so existing setups do not change. Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
1.4 KiB
gpg-agent
Applies some fixes for some common issues encountered with GPG's gpg-agent.
More specifically, this plugin:
- Updates the
GPG_TTYenvironment variable before each shell execution. - Updates the
SSH_AUTH_SOCKenvironment variable ifgpg-agentis your SSH agent. By default the plugin checks whetherenable-ssh-supportis turned on. Thessh-supportsetting lets you say so yourself.
To use it, add gpg-agent to the plugins array of your zshrc file:
plugins=(... gpg-agent)
Settings
Every time a shell starts, the plugin runs gpgconf --list-options gpg-agent to
find out whether enable-ssh-support is turned on. That check can be slow. If
you already know the answer, state it with the ssh-support style and the
plugin skips the check. Set it in your zshrc, before Oh My Zsh is sourced.
If you don't use gpg-agent as your SSH agent:
zstyle ':omz:plugins:gpg-agent' ssh-support no
The plugin then only sets GPG_TTY. It leaves SSH_AUTH_SOCK alone, and it
doesn't update the agent's tty before each command, which only SSH support
needs.
If you do use gpg-agent as your SSH agent:
zstyle ':omz:plugins:gpg-agent' ssh-support yes
The plugin then sets SSH_AUTH_SOCK without checking. enable-ssh-support
still has to be set in your gpg-agent.conf for SSH to work.
Leave the style unset to keep the automatic check.