{"record":{"id":"57732540e7fd2cc4","repo":"puppeteer/puppeteer","slug":"allowwithoutsanitization-is-not-supported-by-webdr","errorCode":null,"errorMessage":"allowWithoutSanitization is not supported by WebDriver BiDi","messagePattern":"allowWithoutSanitization is not supported by WebDriver BiDi","errorType":"exception","errorClass":"UnsupportedOperation","httpStatus":null,"severity":"warning","filePath":"packages/puppeteer-core/src/bidi/BrowserContext.ts","lineNumber":324,"sourceCode":"    );\n  }\n\n  override async setPermission(\n    origin: string | '*',\n    ...permissions: Array<{\n      permission: PermissionDescriptor;\n      state: PermissionState;\n    }>\n  ): Promise<void> {\n    if (origin === '*') {\n      throw new UnsupportedOperation(\n        'Origin (*) is not supported by WebDriver BiDi',\n      );\n    }\n    await Promise.all(\n      permissions.map(permission => {\n        if (permission.permission.allowWithoutSanitization) {\n          throw new UnsupportedOperation(\n            'allowWithoutSanitization is not supported by WebDriver BiDi',\n          );\n        }\n        if (permission.permission.panTiltZoom) {\n          throw new UnsupportedOperation(\n            'panTiltZoom is not supported by WebDriver BiDi',\n          );\n        }\n        if (permission.permission.userVisibleOnly) {\n          throw new UnsupportedOperation(\n            'userVisibleOnly is not supported by WebDriver BiDi',\n          );\n        }\n        return this.userContext.setPermissions(\n          origin,\n          {\n            name: permission.permission.name,\n          },","sourceCodeStart":306,"sourceCodeEnd":342,"githubUrl":"https://github.com/puppeteer/puppeteer/blob/d484e21c17f6023826fefdcdeeb553e04a7aaed8/packages/puppeteer-core/src/bidi/BrowserContext.ts#L306-L342","documentation":"PermissionDescriptor.allowWithoutSanitization (used by the clipboard-sanitized-write permission) has no representation in WebDriver BiDi's permission model, so setPermission() throws UnsupportedOperation up front rather than silently dropping the flag.","triggerScenarios":"Calling setPermission() with a descriptor whose allowWithoutSanitization is true (clipboard-sanitized-write use case).","commonSituations":"Migrating clipboard-write code that relied on the sanitized-write capability from CDP to BiDi; copying PermissionDescriptor shapes from the web platform.","solutions":["Drop allowWithoutSanitization from the descriptor (use plain 'clipboard-write' / 'clipboard-read' instead).","If the sanitized-write behaviour is required, use a CDP-backed browser instead of pure BiDi."],"exampleFix":"// before\nawait context.setPermission(origin, { permission: { name: 'clipboard-write', allowWithoutSanitization: true }, state: 'granted' });\n// after\nawait context.setPermission(origin, { permission: { name: 'clipboard-write' }, state: 'granted' });","handlingStrategy":"validation","validationCode":"for (const p of permissions) { if (p.permission.allowWithoutSanitization) throw new Error('allowWithoutSanitization unsupported under BiDi'); }","typeGuard":"const isBiDiSafeDescriptor = (d: PermissionDescriptor) => !d.allowWithoutSanitization && !d.panTiltZoom && !d.userVisibleOnly;","tryCatchPattern":null,"preventionTips":["Strip allowWithoutSanitization/panTiltZoom/userVisibleOnly before calling setPermission under BiDi."],"tags":["permissions","clipboard","bidi","unsupported-operation"],"backgroundTag":null,"analyzedSha":"d484e21c17f6023826fefdcdeeb553e04a7aaed8","analyzedAt":"2026-08-12T06:33:19.665Z","schemaVersion":2},"datasetVersion":"2026-08-12T13:17:24.610Z"}