Andreas Ericsson [off-list ref] writes:
How is "no tags present" signalled? Without such a signal, the client
must always issue a subsequent request every time there are no tags
embedded in the received pack, as it can't know if the server ignored
the option silently or if there just aren't any new tags.
The fetcher first learns the set of tags and what objects they point at.
That's in the first part of the upload-pack protocol.
Of course, if there is no tag, you won't see them advertised, so you can
know.
After finishing the main part of the object transfer, if some of the
objects that are pointed at by tags are present (and reachable from refs),
but the tags that point at them do not exist yet, that is a sign that the
uploader didn't give you these tag objects. Then you can turn around to
request those tags by initiating another exchange, and ask for them with
"want" lines.