The routing variables _tag and _tag_relay are used to implement a special behaviour called Tagging in PSYC.
It is mostly used to map a response back to its request and gives the sender a way to easily figure out which replies were triggered by packets it sent and thus handle responses asynchronously.
When an entity receives a packet and intends to send a response to it, it MUST copy the contents of the _tag variable to the _tag_relay variable of the response.
Should the routing layer of any involved router encounter an error while delivering a tagged message and intend to generate an error message, it SHOULD copy the tag to a _tag_relay variable in the error report.
Alright, currently it is often called _tag_reply but that is subject to change.
Tags are placed into the routing layer of PSYC so that errors on routing level can easily carry that _tag_relay back to the sender and it can figure out what went wrong (or who to blame). The mailer-daemon style complete copy of the original message is not necessary then. This also explains why it might be more appropriate to call it _tag_relay rather than _tag_reply as the reply may come from any relay on the route, not just the final receiving entity.
Tags are being used in