(I've since worked out that this is probably only a problem on w32 - Unfortunately I can't test a physical linux system at present, but from the dim dark past I seem to remember it working there)
Currently, if you have the wrong smart card inserted, the agent requests you to insert the right card. It would be nice if it also did this when you don't have a card inserted at all.
Looking at line 111 of agent/divert-scd.c, in my limited knowledge of the code base, it looks like the logic test could be changed from:
if (!rc) {
to:
if (!rc || no_card) {
to achieve this?
The ternary operator on line 117 appears to already have the appropriate prompt ready to go, but the code path will never make it there (rc is only ever set when there is a card inserted, no_card is only set when there isn't a card present - the check above only checks rc)