https://bugzilla.redhat.com/show_bug.cgi?id=1436961
--- Comment #20 from David Gibson dgibson@redhat.com --- So, I've finally had a chance to investigate this a bit more. I think the problem is in /bin/xmonad-start after all.
Specifically this stanza:
if [ -x /usr/bin/gnome-keyring-daemon ]; then eval $(gnome-keyring-daemon --start) export GNOME_KEYRING_SOCKET export GNOME_KEYRING_PID fi
The trouble is that this invokes gnome-keyring-daemon dependent only on whether it is installed, not whether it is appropriate or configured for the desktop setup we're entering. The output of gnome-keyring-daemon includes setting SSH_AUTH_SOCK to point to itself, which is again 'eval'ed unconditionally by the script.
By poking around in /proc, I've determined that SSH_AUTH_SOCK *was* set correctly (pointing to ssh-agent) in the parent process of xmonad-start. So AFAICT, the DM scripts are correctly setting it, but then xmonad-start is overwriting it unconditionally with gnome-keyring-daemon.