While gpgconf accepts and relies on the undocumented --homedir option for the purposes of its --list-dirs command, it does not seem to apply that same argument to --launch or --reload.
This results in the following weird situation:
0 dkg@alice:/tmp/cdtemp.SOejfL$ gpgconf --homedir $(pwd) --list-dirs agent-socket /run/user/1000/gnupg/d.rzs1uc9pcsz9ektbpw133ad4/S.gpg-agent 0 dkg@alice:/tmp/cdtemp.SOejfL$ gpgconf --homedir $(pwd) --launch gpg-agent 0 dkg@alice:/tmp/cdtemp.SOejfL$ ls $(gpgconf --homedir $(pwd) --list-dirs agent-socket) ls: cannot access '/run/user/1000/gnupg/d.rzs1uc9pcsz9ektbpw133ad4/S.gpg-agent': No such file or directory 2 dkg@alice:/tmp/cdtemp.SOejfL$
I think that gpgconf should be passing --homedir to gpg-connect-agent when it invokes it for the purposes of --launch at least. And we should probably also add tests to the test suite that cover all of the daemon-control actions.