I have included the line below in my .bash_profile
eval `keychain --eval id_dsa 0123ABCD`
Keychain starts ssh-agent and gpg-agent at login and asks for the corresponding passphrases. After that I can ssh to remote machines from a new shell without asking for the passphrase. However gpg-agent does not seem to cache the private key because the PIN entry pops up the first time I do a decryption.
gpg-agent, by default, forgets you used the key after 10 minutes.
Some solutions for you:
* Don't put your gpg key to the keychain line in .bash_profile, and enter its password only when prompted. keychain is still an useful way to start gpg-agent (this is what I do).
* Change the TTL in ~/.gnupg/gpg-agent.conf (man gpg-agent) so gpg-agent won't forget the key.
Either way, it isn't a bug of keychain,
This information should be added to the man page if it is not there already.
Information in the bug suggests that you are not using keychain as designed, the author of the tool (Daniel Robbins) has already replied.
(I am closing out old base-systems bugs so I can see the forest for the trees)