Thanks for being a part of WWDC25!

How did we do? We’d love to know your thoughts on this year’s conference. Take the survey here

identitylookup needed for ILMessageFilterQueryHandling?

My iOS app uses a Message Filter extension (via ILMessageFilterQueryHandling) and works only when run directly as the extension target. When installed normally (via TestFlight), the filter does not trigger at all — which I now believe is because iOS enforces the com.apple.developer.identitylookup entitlement at runtime.

Anyone know anything about this? I put in a request for the entitlement last week but heard nothing back. Called Apple "technical" support and they had no idea what I was talking about.

The documentation around this is EXTREMELY lacking in my opinion...

Same boat! When building my target, I now get Provisioning profile "iOS Team Provisioning Profile: xxx.MessageFilterExtension" doesn't include the com.apple.developer.identitylookup entitlement.

Interesting. Apparently they shelved a lot of their documentation around this a few months back. Such a disapointment that we are subjected to guessing at entitlements needed, and of course the wait time for any response is weeks...

I added logging to the ILMessageFilterCapabilitiesQueryHandling and it is not getting called.

    func handle(
        _ capabilitiesQueryRequest: ILMessageFilterCapabilitiesQueryRequest,
        context: ILMessageFilterExtensionContext,
        completion: @escaping (ILMessageFilterCapabilitiesQueryResponse) -> Void
    ) {
        os_log("Handling capabilities query", log: self.logger, type: .debug)
        let response = ILMessageFilterCapabilitiesQueryResponse()
        response.transactionalSubActions = [.none]
        response.promotionalSubActions = [.none]
        completion(response)
    }
   ...
}

Yes same issue for me the filter extension never gets called by the main target so no logs to go by

identitylookup needed for ILMessageFilterQueryHandling?
 
 
Q