I think you are confusing directives with responses. Most directives don't actually produce responses at all.
Certainly the authentication and validation directives don't produce responses at all. Instead, they filter requests, either rejecting them or letting them pass on to the next stage.
For all happy paths, responses are eventually produced by one of the forms of the complete directive, which uses the media-type aware marshalling infrastructure to produce content negotiated responses. You have full control over this and everything is fully aware of content negotiation.
On the other hand, rejections that are not cancelled out by other directives can end up in the rejection handler, which will produce the actual error responses. It is the default rejection handler that produces error responses using the text/plain media type. That is the bit that breaks your content negotiation.
So if you want your errors to use a certain media type, it's only the rejection handler that you need to customize. The examples that I linked to provide a way to deal with content negotiation specifically for those situations using a custom rejection handler.
Does that make sense?
Age