From 3a939d806cf206790db8aae0a513eef51c3be16c Mon Sep 17 00:00:00 2001
From: dprevoznik <58714078+dprevoznik@users.noreply.github.com>
Date: Tue, 21 Apr 2026 14:18:34 +0000
Subject: [PATCH 1/3] fix(auth): connect Playwright before using page in
overview example
The 'Use the Profile' example called page.goto() without ever defining
page, causing a NameError/ReferenceError on copy-paste. Mirror the CDP
connection pattern from browsers/create-a-browser so the snippet is
runnable as-is.
---
auth/overview.mdx | 21 +++++++++++++++++----
1 file changed, 17 insertions(+), 4 deletions(-)
diff --git a/auth/overview.mdx b/auth/overview.mdx
index 9a2ba56..1cb828e 100644
--- a/auth/overview.mdx
+++ b/auth/overview.mdx
@@ -74,23 +74,36 @@ if state.status == "AUTHENTICATED":
```typescript TypeScript
-const browser = await kernel.browsers.create({
+import { chromium } from 'playwright';
+
+const kernelBrowser = await kernel.browsers.create({
profile: { name: 'netflix-user-123' },
stealth: true,
});
+const browser = await chromium.connectOverCDP(kernelBrowser.cdp_ws_url);
+const context = browser.contexts()[0];
+const page = context.pages()[0];
+
// Navigate to the site—you're already logged in
await page.goto('https://netflix.com');
```
```python Python
-browser = await kernel.browsers.create(
+from playwright.async_api import async_playwright
+
+kernel_browser = await kernel.browsers.create(
profile={"name": "netflix-user-123"},
stealth=True,
)
-# Navigate to the site—you're already logged in
-await page.goto("https://netflix.com")
+async with async_playwright() as playwright:
+ browser = await playwright.chromium.connect_over_cdp(kernel_browser.cdp_ws_url)
+ context = browser.contexts[0]
+ page = context.pages[0]
+
+ # Navigate to the site—you're already logged in
+ await page.goto("https://netflix.com")
```
From c9a1317abea15b2134c8040f8eda9c5c9ae55f54 Mon Sep 17 00:00:00 2001
From: dprevoznik <58714078+dprevoznik@users.noreply.github.com>
Date: Tue, 21 Apr 2026 14:20:29 +0000
Subject: [PATCH 2/3] docs(auth): add Kernel SDK imports to first overview
snippet
---
auth/overview.mdx | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/auth/overview.mdx b/auth/overview.mdx
index 1cb828e..d269d39 100644
--- a/auth/overview.mdx
+++ b/auth/overview.mdx
@@ -13,6 +13,10 @@ Managed Auth creates and maintains authenticated browser sessions for your AI ag
```typescript TypeScript
+import Kernel from '@onkernel/sdk';
+
+const kernel = new Kernel();
+
const auth = await kernel.auth.connections.create({
domain: 'netflix.com',
profile_name: 'netflix-user-123',
@@ -20,6 +24,10 @@ const auth = await kernel.auth.connections.create({
```
```python Python
+from kernel import AsyncKernel
+
+kernel = AsyncKernel()
+
auth = await kernel.auth.connections.create(
domain="netflix.com",
profile_name="netflix-user-123",
From b495242e646ac9f1b4506fa63214cb9d0bfd5b90 Mon Sep 17 00:00:00 2001
From: dprevoznik <58714078+dprevoznik@users.noreply.github.com>
Date: Tue, 21 Apr 2026 14:23:41 +0000
Subject: [PATCH 3/3] docs(auth): use sync Kernel client in Python snippets
Matches the dominant pattern across the docs (sync Kernel client with
async Playwright). Keeps the Step 3 Playwright block async, since that
mirrors browsers/create-a-browser.mdx.
---
auth/overview.mdx | 18 ++++++++++--------
1 file changed, 10 insertions(+), 8 deletions(-)
diff --git a/auth/overview.mdx b/auth/overview.mdx
index d269d39..e069381 100644
--- a/auth/overview.mdx
+++ b/auth/overview.mdx
@@ -24,11 +24,11 @@ const auth = await kernel.auth.connections.create({
```
```python Python
-from kernel import AsyncKernel
+from kernel import Kernel
-kernel = AsyncKernel()
+kernel = Kernel()
-auth = await kernel.auth.connections.create(
+auth = kernel.auth.connections.create(
domain="netflix.com",
profile_name="netflix-user-123",
)
@@ -60,16 +60,18 @@ if (state.status === 'AUTHENTICATED') {
```
```python Python
-login = await kernel.auth.connections.login(auth.id)
+import time
+
+login = kernel.auth.connections.login(auth.id)
# Send user to login page
print(f"Login URL: {login.hosted_url}")
# Poll until complete
-state = await kernel.auth.connections.retrieve(auth.id)
+state = kernel.auth.connections.retrieve(auth.id)
while state.flow_status == "IN_PROGRESS":
- await asyncio.sleep(2)
- state = await kernel.auth.connections.retrieve(auth.id)
+ time.sleep(2)
+ state = kernel.auth.connections.retrieve(auth.id)
if state.status == "AUTHENTICATED":
print("Authenticated!")
@@ -100,7 +102,7 @@ await page.goto('https://netflix.com');
```python Python
from playwright.async_api import async_playwright
-kernel_browser = await kernel.browsers.create(
+kernel_browser = kernel.browsers.create(
profile={"name": "netflix-user-123"},
stealth=True,
)