Hi @Joe Thorpe ,
Thanks for reaching out!
As per the documentation filter collection complex types, the suggested way for filtering not equal is not(categories/any(c:c eq 'Orange category')
I am able to return results by using this query $filter=not(categories/any(c:c eq 'Orange category'))
by applying filtering on me/messages
endpoint.
But for me/events
as you mentioned it is working with $filter=categories/any(c:c ne 'Orange category').
Unlike this isn't an expected behavior, I would suggest you submit request in https://aka.ms/graphfeedback or you can raise support ticket from
http://aad.portal.azure.com/ or https://admin.microsoft.com/#/support/requests.
Hope this helps.
If the reply is helpful, please click "Accept Answer" and kindly upvote it. If you have additional questions about this answer, please click "Comment".