{"record":{"id":"b53d8ef9990a250f","repo":"homebridge/homebridge","slug":"accessory-data-uuid-not-found-no-child-bridge","errorCode":null,"errorMessage":"Accessory ${data.uuid} not found - no child bridge with Matter claimed it","messagePattern":"Accessory (.+?) not found - no child bridge with Matter claimed it","errorType":"console","errorClass":null,"httpStatus":null,"severity":"warning","filePath":"src/server.ts","lineNumber":1232,"sourceCode":"        }\n\n        // Every Matter child is asked and only the owner answers - a child that\n        // does not have the accessory returns silently, by design. So when no\n        // child owns it nothing is sent back at all, and the UI sat through its\n        // own 10s timeout, retried the command, then reported a failure. Mirror\n        // the accessoryInfoData fallback: arm a short timer that the owner's\n        // response cancels (via ChildBridgeService.onAccessoryControlResponse).\n        //\n        // Only meaningful with a correlationId — the UI drops any response\n        // without one, so there would be nothing to rescue.\n        if (correlationId) {\n          const existing = this.pendingMatterControlRequests.get(correlationId)\n          if (existing) {\n            clearTimeout(existing)\n          }\n          const fallback = setTimeout(() => {\n            this.pendingMatterControlRequests.delete(correlationId)\n            matterLogger.warn(`Accessory ${data.uuid} not found - no child bridge with Matter claimed it`)\n            this.sendMatterControlResponse({ success: false, error: 'Accessory not found', uuid: data.uuid }, correlationId)\n          }, 2000)\n          fallback.unref()\n          this.pendingMatterControlRequests.set(correlationId, fallback)\n        }\n      } else {\n        matterLogger.warn(`Accessory ${data.uuid} not found - not on main bridge and no child bridges with Matter available`)\n        this.sendMatterControlResponse({ success: false, error: 'Accessory not found', uuid: data.uuid }, correlationId)\n      }\n    }\n  }\n\n  private printSetupInfo(pin: string): void {\n    /* eslint-disable no-console */\n    console.log('Setup Payload:')\n    console.log(this.bridgeService.bridge.setupURI())\n\n    if (!this.options.hideQRCode) {","sourceCodeStart":1214,"sourceCodeEnd":1250,"githubUrl":"https://github.com/homebridge/homebridge/blob/edf54930340d67cade23d01abd41b03cd9621e8b/src/server.ts#L1214-L1250","documentation":"When handling a Matter control request forwarded to a child bridge, the Server waits up to 2 seconds for a child bridge with Matter to claim the accessory UUID. If the timeout fires, no child bridge claimed it, and the server replies { success: false, error: 'Accessory not found' } to the IPC caller while logging this warning.","triggerScenarios":"A Matter control IPC message references an accessory UUID that no child bridge with Matter enabled has claimed within the 2s fallback timeout.","commonSituations":"Accessory was removed or moved to a bridge without Matter; child bridge crashed; config UUID typo; Matter not enabled on the child bridge hosting the accessory.","solutions":["Verify the accessory still exists in config.json and is hosted by a child bridge with matter enabled","Restart Homebridge so child bridges re-register their Matter accessories","Re-pair the accessory if it was re-created (UUID changed)","Check child bridge logs for startup failures"],"exampleFix":"// before\n{ \"accessories\": [{ \"accessory\": \"X\", \"name\": \"Light\", \"_bridge\": { \"username\": \"..\" } }] }\n// after\n{ \"accessories\": [{ \"accessory\": \"X\", \"name\": \"Light\", \"_bridge\": { \"username\": \"..\", \"matter\": {} } }] }","handlingStrategy":"retry","validationCode":"const isMatterHosted = config.accessories?.some(a => a._bridge?.matter && a.uuid === requestedUuid)\nif (!isMatterHosted) reject(new Error(`Accessory ${requestedUuid} has no Matter child bridge`))","typeGuard":null,"tryCatchPattern":"const res = await sendMatterControlRequest(msg)\nif (!res.success && res.error === 'Accessory not found') {\n  // fall back or surface to UI\n}","preventionTips":["Ensure _bridge.matter is set on bridges hosting Matter accessories","Re-check UUIDs after re-creating accessories (they change on re-pair)","Monitor child bridge startup logs"],"tags":["matter","ipc","child-bridge"],"backgroundTag":"matter-accessory-not-found","analyzedSha":"edf54930340d67cade23d01abd41b03cd9621e8b","analyzedAt":"2026-08-30T21:28:53.235Z","schemaVersion":2},"datasetVersion":"2026-08-30T23:17:21.991Z"}