AudioAccessoryKit: AccessoryControlDevice.current(for:) returns Error.invalidated after successful AccessorySetupKit pairing and registration

Hi everyone,

I'm developing a third-party Bluetooth audio accessory and investigating AudioAccessoryKit placement updates on iOS 26.4.

My goal is to update the accessory's wearing state (for example, .inEar / .offHead) based on BLE notifications from the accessory.

Implementation flow
  1. Pair the Bluetooth accessory using AccessorySetupKit.
  2. Obtain the paired ASAccessory.
  3. Register the accessory in the host app:
try await AccessoryControlDevice.register(
    accessory,
    capabilities: [.audioSwitching, .placement]
)
  1. Attempt to retrieve the registered device:
let device = try await AccessoryControlDevice.current(for: accessory)

However, current(for:) consistently fails with:

AccessoryControlDevice.Error.invalidated
Request invalidated
BLE communication status

The BLE communication itself appears to be successful.

The following logs show that the command was sent and the accessory returned a response:

[ASK] cmd didWrite ok 68745353-1810-4B13-83A2-C1B21B652C9B notifying=false

[ASK] cmd toSend mac=2a:e6:e7:eb:be:2c model=B172 bytes=5560014FC000000F status=connected shaking=false

[ASK] cmd write direct mac=2a:e6:e7:eb:be:2c bytes=5560014FC000000F chars=10 peripheral=2 delegate=Optional<CBPeripheralDelegate> connected=connected

[ASK] cmd reply ok uuid=CA235943-1810-45E6-8326-FC8CA3BC45CE bytes=5560014F4001000F

[ASK][PLC] Experiment 4 - inEar request delivered, op=update worn=true

[ASK][PLC] Experiment 4 - inEar current baseline:
current FAIL AccessoryControlDevice.Error.invalidated
desc=Request invalidated

The BLE command is successfully delivered to the accessory, and the accessory responds. However, the AudioAccessoryKit API still returns invalidated.

Questions
  1. Does AccessoryControlDevice.current(for:) require a specific app extension context, entitlement, or authorization?
  2. Is it expected to call current(for:) from the host app, or must it be called from an app extension?
  3. Does registering .placement and .audioSwitching in the host app guarantee that the accessory can subsequently be retrieved using current(for:)?
  4. Are there any additional requirements for the accessory, firmware, or system-side registration before current(for:) can succeed?
  5. Is there a known issue with AccessoryControlDevice.current(for:) returning Error.invalidated on iOS 26.4?

I understand that AccessoryControlDevice.update(_:) is documented as an API that must only be called from an app extension. I'm trying to determine whether the failure of current(for:) in the host app is expected behavior or indicates a registration/configuration problem.

Any sample code, implementation guidance, or clarification from Apple engineers would be greatly appreciated.

Thanks!