Call and await clearPermissionOverrides() on the BrowserContext where you set the permissions. It clears every permission override in that context, not just the override for one origin.
Clear permission overrides in the current context
The method belongs to Puppeteer’s BrowserContext, not to a Page. Use the same context that received the override:
const context = browser.defaultBrowserContext();
await context.overridePermissions('https://example.com', ['clipboard-read']);
// Run the work that needs the permission override.
await context.clearPermissionOverrides();
Puppeteer’s API reference defines clearPermissionOverrides() as clearing all permission overrides for that browser context. Its return type is Promise<void>, so await it before continuing with work that depends on the permissions being reset.
Understand the reset scope
The reset applies to the context on which you call it and clears that context’s overrides across origins. It is not a one-origin undo operation. At the protocol level, Puppeteer sends Browser.resetPermissions with the context ID; omitting the ID selects the default browser context and resets permission management for all origins. See the Chrome DevTools Protocol Browser domain.
#1 Best Overall
For the default context, call the method on browser.defaultBrowserContext(). For a non-default context, call it on that same context instance. The method clears overrides; it does not close or recreate the context.
Use a separate context when you need isolation
A separate browser context can isolate an automation task. Puppeteer’s browser-management guide describes contexts as isolating cookies and local storage, and notes that closing a context closes its pages. Creating one is an isolation choice, not a requirement for clearing permissions.
Rank #2
- HTML CSS Design and Build Web Sites
- Comes with secure packaging
- It can be a gift option
const context = await browser.createBrowserContext();
try {
const page = await context.newPage();
await context.overridePermissions('https://example.com', ['geolocation']);
// Run isolated work.
await context.clearPermissionOverrides();
} finally {
await context.close();
}
This pattern clears permissions before closing the isolated context. If you are finished with the entire context, closing it is a separate lifecycle action.
Common mistakes and fixes
- Calling the method on a page: It is a
BrowserContextmethod. Keep a reference to the context and callcontext.clearPermissionOverrides(). - Not awaiting the reset: Since the method returns a promise, use
awaitbefore starting steps that expect normal permission behavior. - Expecting to clear only one origin: The method clears all overrides in the selected context. If you need different permission behavior afterward, set the required overrides again for that context.
- Clearing the wrong context: If the override was set on a non-default context, clear it on that same context; clearing the default context does not target the other context.
- Expecting the call to close or recreate the context: Permission reset and context lifecycle are separate. Use
context.close()when you want to close the context and its pages.
Or skip the browser setup
If your goal is to capture a website rather than automate its browser permissions, ScreenshotNeo returns a screenshot or PDF with one GET request. For example, save a WebP capture with cURL:
Quick Recap
Best Value
Rank #4
- Brand: Wiley
- Set of 2 Volumes
- A handy two-book set that uniquely combines related technologies Highly visual format and accessible language makes these books highly effective learning tools Perfect for beginning web designers and front-end developers
Rank #3
curl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://example.com -o shot.webp
See the ScreenshotNeo API documentation for request options. Cookie banners are accepted and removed before capture, along with supported newsletter popups and chat widgets. Bot checks, blank pages, timeouts, failed loads, and cache hits cost nothing; the response identifies the page verdict and billing status in headers. Its MCP server provides screenshot tools for AI agents, and the free plan includes 1,000 screenshots a month with no card; paid plans start at $5 for 3,000 shots.
Sign up for ScreenshotNeo’s free plan.
Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.

