[{"data":1,"prerenderedAt":1238},["ShallowReactive",2],{"navigation":3,"/ecosystem/browser":145,"/ecosystem/browser-surround":1233},[4,28,49,88,101,127],{"title":5,"path":6,"stem":7,"children":8,"icon":27},"Getting Started","/getting-started","1.getting-started/1.index",[9,11,15,19,23],{"title":10,"path":6,"stem":7},"Introduction",{"title":12,"path":13,"stem":14},"Working with Agents","/getting-started/working-with-agents","1.getting-started/2.working-with-agents",{"title":16,"path":17,"stem":18},"Setup a Service Provider","/getting-started/setup-service-provider","1.getting-started/3.setup-service-provider",{"title":20,"path":21,"stem":22},"Setup an Identity Provider","/getting-started/setup-identity-provider","1.getting-started/4.setup-identity-provider",{"title":24,"path":25,"stem":26},"Developers","/getting-started/developers","1.getting-started/5.developers",false,{"title":29,"icon":27,"path":30,"stem":31,"children":32,"page":27},"Guides","/guides","2.guides",[33,37,41,45],{"title":34,"path":35,"stem":36},"How It Works","/guides/how-it-works","2.guides/1.how-it-works",{"title":38,"path":39,"stem":40},"Capabilities Guide","/guides/capabilities-guide","2.guides/2.capabilities-guide",{"title":42,"path":43,"stem":44},"End-to-End Tutorial","/guides/end-to-end-tutorial","2.guides/3.end-to-end-tutorial",{"title":46,"path":47,"stem":48},"Delegation Guide","/guides/delegation-guide","2.guides/4.delegation-guide",{"title":50,"path":51,"stem":52,"children":53,"icon":27},"Ecosystem","/ecosystem","3.ecosystem/1.index",[54,56,60,64,68,72,76,80,84],{"title":55,"path":51,"stem":52},"Overview",{"title":57,"path":58,"stem":59},"grapes CLI","/ecosystem/grapes","3.ecosystem/2.grapes",{"title":61,"path":62,"stem":63},"shapes CLI","/ecosystem/shapes","3.ecosystem/3.shapes",{"title":65,"path":66,"stem":67},"escapes","/ecosystem/escapes","3.ecosystem/4.escapes",{"title":69,"path":70,"stem":71},"OpenApe Proxy","/ecosystem/proxy","3.ecosystem/5.proxy",{"title":73,"path":74,"stem":75},"OpenApe Browser","/ecosystem/browser","3.ecosystem/6.browser",{"title":77,"path":78,"stem":79},"OpenApe Auth","/ecosystem/auth","3.ecosystem/7.auth",{"title":81,"path":82,"stem":83},"OpenApe Grants","/ecosystem/grants","3.ecosystem/8.grants",{"title":85,"path":86,"stem":87},"nuxt-auth-sp","/ecosystem/nuxt-auth-sp","3.ecosystem/9.nuxt-auth-sp",{"title":89,"icon":27,"path":90,"stem":91,"children":92,"page":27},"Security","/security","4.security",[93,97],{"title":94,"path":95,"stem":96},"Compliance","/security/compliance","4.security/1.compliance",{"title":98,"path":99,"stem":100},"Threat Model","/security/threat-model","4.security/2.threat-model",{"title":102,"path":103,"stem":104,"children":105,"icon":27},"Reference","/reference","5.reference/1.index",[106,107,111,115,119,123],{"title":102,"path":103,"stem":104},{"title":108,"path":109,"stem":110},"IdP Configuration","/reference/idp-configuration","5.reference/2.idp-configuration",{"title":112,"path":113,"stem":114},"SP Configuration","/reference/sp-configuration","5.reference/3.sp-configuration",{"title":116,"path":117,"stem":118},"API Endpoints","/reference/api-endpoints","5.reference/4.api-endpoints",{"title":120,"path":121,"stem":122},"escapes Config","/reference/escapes-config","5.reference/5.escapes-config",{"title":124,"path":125,"stem":126},"Proxy Config","/reference/proxy-config","5.reference/6.proxy-config",{"title":128,"path":129,"stem":130,"children":131,"icon":27},"Operations","/operations","6.operations/1.index",[132,133,137,141],{"title":128,"path":129,"stem":130},{"title":134,"path":135,"stem":136},"Deployment","/operations/deployment","6.operations/2.deployment",{"title":138,"path":139,"stem":140},"Troubleshooting","/operations/troubleshooting","6.operations/3.troubleshooting",{"title":142,"path":143,"stem":144},"Monitoring","/operations/monitoring","6.operations/4.monitoring",{"id":146,"title":73,"body":147,"description":1227,"extension":1228,"links":1229,"meta":1230,"navigation":237,"path":74,"seo":1231,"stem":75,"__hash__":1232},"docs/3.ecosystem/6.browser.md",{"type":148,"value":149,"toc":1215},"minimark",[150,155,159,164,193,197,458,462,603,607,614,669,673,676,705,911,915,918,1093,1107,1111,1118,1181,1185,1211],[151,152,154],"h1",{"id":153},"openapebrowser","@openape/browser",[156,157,158],"p",{},"A Playwright wrapper that adds grant-based route interception and delegation login. Every HTTP(S) request from the browser is evaluated against rules — unauthorized requests are blocked before reaching the network.",[160,161,163],"h2",{"id":162},"installation","Installation",[165,166,171],"pre",{"className":167,"code":168,"language":169,"meta":170,"style":170},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","npm install @openape/browser playwright\n","bash","",[172,173,174],"code",{"__ignoreMap":170},[175,176,179,183,187,190],"span",{"class":177,"line":178},"line",1,[175,180,182],{"class":181},"sBMFI","npm",[175,184,186],{"class":185},"sfazB"," install",[175,188,189],{"class":185}," @openape/browser",[175,191,192],{"class":185}," playwright\n",[160,194,196],{"id":195},"quick-start","Quick Start",[165,198,202],{"className":199,"code":200,"language":201,"meta":170,"style":170},"language-typescript shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import { createGrantedBrowser } from '@openape/browser'\n\nconst browser = await createGrantedBrowser({\n  rulesFile: './rules.toml',\n  idpUrl: 'https://id.example.com',\n  agentEmail: 'agent+scraper@example.com'\n})\n\nconst page = await browser.newPage()\nawait page.goto('https://target-app.example.com')\n\n// Do your automation work...\nconst title = await page.title()\nconsole.log('Page title:', title)\n\nawait browser.close()\n","typescript",[172,203,204,232,239,264,285,302,317,326,331,355,380,385,392,413,439,444],{"__ignoreMap":170},[175,205,206,210,214,218,221,224,227,229],{"class":177,"line":178},[175,207,209],{"class":208},"s7zQu","import",[175,211,213],{"class":212},"sMK4o"," {",[175,215,217],{"class":216},"sTEyZ"," createGrantedBrowser",[175,219,220],{"class":212}," }",[175,222,223],{"class":208}," from",[175,225,226],{"class":212}," '",[175,228,154],{"class":185},[175,230,231],{"class":212},"'\n",[175,233,235],{"class":177,"line":234},2,[175,236,238],{"emptyLinePlaceholder":237},true,"\n",[175,240,242,246,249,252,255,258,261],{"class":177,"line":241},3,[175,243,245],{"class":244},"spNyl","const",[175,247,248],{"class":216}," browser ",[175,250,251],{"class":212},"=",[175,253,254],{"class":208}," await",[175,256,217],{"class":257},"s2Zo4",[175,259,260],{"class":216},"(",[175,262,263],{"class":212},"{\n",[175,265,267,271,274,276,279,282],{"class":177,"line":266},4,[175,268,270],{"class":269},"swJcz","  rulesFile",[175,272,273],{"class":212},":",[175,275,226],{"class":212},[175,277,278],{"class":185},"./rules.toml",[175,280,281],{"class":212},"'",[175,283,284],{"class":212},",\n",[175,286,288,291,293,295,298,300],{"class":177,"line":287},5,[175,289,290],{"class":269},"  idpUrl",[175,292,273],{"class":212},[175,294,226],{"class":212},[175,296,297],{"class":185},"https://id.example.com",[175,299,281],{"class":212},[175,301,284],{"class":212},[175,303,305,308,310,312,315],{"class":177,"line":304},6,[175,306,307],{"class":269},"  agentEmail",[175,309,273],{"class":212},[175,311,226],{"class":212},[175,313,314],{"class":185},"agent+scraper@example.com",[175,316,231],{"class":212},[175,318,320,323],{"class":177,"line":319},7,[175,321,322],{"class":212},"}",[175,324,325],{"class":216},")\n",[175,327,329],{"class":177,"line":328},8,[175,330,238],{"emptyLinePlaceholder":237},[175,332,334,336,339,341,343,346,349,352],{"class":177,"line":333},9,[175,335,245],{"class":244},[175,337,338],{"class":216}," page ",[175,340,251],{"class":212},[175,342,254],{"class":208},[175,344,345],{"class":216}," browser",[175,347,348],{"class":212},".",[175,350,351],{"class":257},"newPage",[175,353,354],{"class":216},"()\n",[175,356,358,361,364,366,369,371,373,376,378],{"class":177,"line":357},10,[175,359,360],{"class":208},"await",[175,362,363],{"class":216}," page",[175,365,348],{"class":212},[175,367,368],{"class":257},"goto",[175,370,260],{"class":216},[175,372,281],{"class":212},[175,374,375],{"class":185},"https://target-app.example.com",[175,377,281],{"class":212},[175,379,325],{"class":216},[175,381,383],{"class":177,"line":382},11,[175,384,238],{"emptyLinePlaceholder":237},[175,386,388],{"class":177,"line":387},12,[175,389,391],{"class":390},"sHwdD","// Do your automation work...\n",[175,393,395,397,400,402,404,406,408,411],{"class":177,"line":394},13,[175,396,245],{"class":244},[175,398,399],{"class":216}," title ",[175,401,251],{"class":212},[175,403,254],{"class":208},[175,405,363],{"class":216},[175,407,348],{"class":212},[175,409,410],{"class":257},"title",[175,412,354],{"class":216},[175,414,416,419,421,424,426,428,431,433,436],{"class":177,"line":415},14,[175,417,418],{"class":216},"console",[175,420,348],{"class":212},[175,422,423],{"class":257},"log",[175,425,260],{"class":216},[175,427,281],{"class":212},[175,429,430],{"class":185},"Page title:",[175,432,281],{"class":212},[175,434,435],{"class":212},",",[175,437,438],{"class":216}," title)\n",[175,440,442],{"class":177,"line":441},15,[175,443,238],{"emptyLinePlaceholder":237},[175,445,447,449,451,453,456],{"class":177,"line":446},16,[175,448,360],{"class":208},[175,450,345],{"class":216},[175,452,348],{"class":212},[175,454,455],{"class":257},"close",[175,457,354],{"class":216},[160,459,461],{"id":460},"configuration-options","Configuration Options",[165,463,465],{"className":199,"code":464,"language":201,"meta":170,"style":170},"interface GrantedBrowserOptions {\n  // Rule source (one of)\n  rulesFile?: string       // Path to TOML rules file\n  rules?: Rules            // Inline rules object\n\n  // IdP connection\n  idpUrl: string           // IdP URL for grant requests\n  agentEmail: string       // Agent identity\n\n  // Playwright options\n  headless?: boolean       // Default: true\n  browserType?: 'chromium' | 'firefox' | 'webkit'  // Default: 'chromium'\n}\n",[172,466,467,478,483,496,509,513,518,529,540,544,549,562,598],{"__ignoreMap":170},[175,468,469,472,475],{"class":177,"line":178},[175,470,471],{"class":244},"interface",[175,473,474],{"class":181}," GrantedBrowserOptions",[175,476,477],{"class":212}," {\n",[175,479,480],{"class":177,"line":234},[175,481,482],{"class":390},"  // Rule source (one of)\n",[175,484,485,487,490,493],{"class":177,"line":241},[175,486,270],{"class":269},[175,488,489],{"class":212},"?:",[175,491,492],{"class":181}," string",[175,494,495],{"class":390},"       // Path to TOML rules file\n",[175,497,498,501,503,506],{"class":177,"line":266},[175,499,500],{"class":269},"  rules",[175,502,489],{"class":212},[175,504,505],{"class":181}," Rules",[175,507,508],{"class":390},"            // Inline rules object\n",[175,510,511],{"class":177,"line":287},[175,512,238],{"emptyLinePlaceholder":237},[175,514,515],{"class":177,"line":304},[175,516,517],{"class":390},"  // IdP connection\n",[175,519,520,522,524,526],{"class":177,"line":319},[175,521,290],{"class":269},[175,523,273],{"class":212},[175,525,492],{"class":181},[175,527,528],{"class":390},"           // IdP URL for grant requests\n",[175,530,531,533,535,537],{"class":177,"line":328},[175,532,307],{"class":269},[175,534,273],{"class":212},[175,536,492],{"class":181},[175,538,539],{"class":390},"       // Agent identity\n",[175,541,542],{"class":177,"line":333},[175,543,238],{"emptyLinePlaceholder":237},[175,545,546],{"class":177,"line":357},[175,547,548],{"class":390},"  // Playwright options\n",[175,550,551,554,556,559],{"class":177,"line":382},[175,552,553],{"class":269},"  headless",[175,555,489],{"class":212},[175,557,558],{"class":181}," boolean",[175,560,561],{"class":390},"       // Default: true\n",[175,563,564,567,569,571,574,576,579,581,584,586,588,590,593,595],{"class":177,"line":387},[175,565,566],{"class":269},"  browserType",[175,568,489],{"class":212},[175,570,226],{"class":212},[175,572,573],{"class":185},"chromium",[175,575,281],{"class":212},[175,577,578],{"class":212}," |",[175,580,226],{"class":212},[175,582,583],{"class":185},"firefox",[175,585,281],{"class":212},[175,587,578],{"class":212},[175,589,226],{"class":212},[175,591,592],{"class":185},"webkit",[175,594,281],{"class":212},[175,596,597],{"class":390},"  // Default: 'chromium'\n",[175,599,600],{"class":177,"line":394},[175,601,602],{"class":212},"}\n",[160,604,606],{"id":605},"rules","Rules",[156,608,609,610,273],{},"Rules use the same TOML format as ",[611,612,613],"a",{"href":70},"@openape/proxy",[165,615,619],{"className":616,"code":617,"language":618,"meta":170,"style":170},"language-toml shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","[[rules.allow]]\ndomains = [\"target-app.example.com\"]\n\n[[rules.deny]]\ndomains = [\"*.tracking.com\", \"analytics.*\"]\n\n[[rules.grant_required]]\ndomains = [\"api.external-service.com\"]\nmethods = [\"POST\"]\ngrant_type = \"once\"\n","toml",[172,620,621,626,631,635,640,645,649,654,659,664],{"__ignoreMap":170},[175,622,623],{"class":177,"line":178},[175,624,625],{},"[[rules.allow]]\n",[175,627,628],{"class":177,"line":234},[175,629,630],{},"domains = [\"target-app.example.com\"]\n",[175,632,633],{"class":177,"line":241},[175,634,238],{"emptyLinePlaceholder":237},[175,636,637],{"class":177,"line":266},[175,638,639],{},"[[rules.deny]]\n",[175,641,642],{"class":177,"line":287},[175,643,644],{},"domains = [\"*.tracking.com\", \"analytics.*\"]\n",[175,646,647],{"class":177,"line":304},[175,648,238],{"emptyLinePlaceholder":237},[175,650,651],{"class":177,"line":319},[175,652,653],{},"[[rules.grant_required]]\n",[175,655,656],{"class":177,"line":328},[175,657,658],{},"domains = [\"api.external-service.com\"]\n",[175,660,661],{"class":177,"line":333},[175,662,663],{},"methods = [\"POST\"]\n",[175,665,666],{"class":177,"line":357},[175,667,668],{},"grant_type = \"once\"\n",[160,670,672],{"id":671},"route-interception","Route Interception",[156,674,675],{},"Every request the browser makes (page loads, XHR, fetch, images, scripts) is evaluated against your rules:",[677,678,679,689,697],"ul",{},[680,681,682,688],"li",{},[683,684,685],"strong",{},[172,686,687],{},"allow"," — Request proceeds normally",[680,690,691,696],{},[683,692,693],{},[172,694,695],{},"deny"," — Request is aborted, page receives a network error",[680,698,699,704],{},[683,700,701],{},[172,702,703],{},"grant_required"," — A grant is requested from the IdP; the request is held until approved",[165,706,708],{"className":199,"code":707,"language":201,"meta":170,"style":170},"const browser = await createGrantedBrowser({\n  rules: {\n    allow: [{ domains: ['app.example.com'] }],\n    deny: [{ domains: ['*.ads.com'] }],\n    grant_required: [\n      { domains: ['api.example.com'], methods: ['POST'], grant_type: 'once' }\n    ]\n  },\n  idpUrl: 'https://id.example.com',\n  agentEmail: 'agent+bot@example.com'\n})\n",[172,709,710,726,734,771,803,813,868,873,878,892,905],{"__ignoreMap":170},[175,711,712,714,716,718,720,722,724],{"class":177,"line":178},[175,713,245],{"class":244},[175,715,248],{"class":216},[175,717,251],{"class":212},[175,719,254],{"class":208},[175,721,217],{"class":257},[175,723,260],{"class":216},[175,725,263],{"class":212},[175,727,728,730,732],{"class":177,"line":234},[175,729,500],{"class":269},[175,731,273],{"class":212},[175,733,477],{"class":212},[175,735,736,739,741,744,747,750,752,754,756,759,761,764,766,769],{"class":177,"line":241},[175,737,738],{"class":269},"    allow",[175,740,273],{"class":212},[175,742,743],{"class":216}," [",[175,745,746],{"class":212},"{",[175,748,749],{"class":269}," domains",[175,751,273],{"class":212},[175,753,743],{"class":216},[175,755,281],{"class":212},[175,757,758],{"class":185},"app.example.com",[175,760,281],{"class":212},[175,762,763],{"class":216},"] ",[175,765,322],{"class":212},[175,767,768],{"class":216},"]",[175,770,284],{"class":212},[175,772,773,776,778,780,782,784,786,788,790,793,795,797,799,801],{"class":177,"line":266},[175,774,775],{"class":269},"    deny",[175,777,273],{"class":212},[175,779,743],{"class":216},[175,781,746],{"class":212},[175,783,749],{"class":269},[175,785,273],{"class":212},[175,787,743],{"class":216},[175,789,281],{"class":212},[175,791,792],{"class":185},"*.ads.com",[175,794,281],{"class":212},[175,796,763],{"class":216},[175,798,322],{"class":212},[175,800,768],{"class":216},[175,802,284],{"class":212},[175,804,805,808,810],{"class":177,"line":287},[175,806,807],{"class":269},"    grant_required",[175,809,273],{"class":212},[175,811,812],{"class":216}," [\n",[175,814,815,818,820,822,824,826,829,831,833,835,838,840,842,844,847,849,851,853,856,858,860,863,865],{"class":177,"line":304},[175,816,817],{"class":212},"      {",[175,819,749],{"class":269},[175,821,273],{"class":212},[175,823,743],{"class":216},[175,825,281],{"class":212},[175,827,828],{"class":185},"api.example.com",[175,830,281],{"class":212},[175,832,768],{"class":216},[175,834,435],{"class":212},[175,836,837],{"class":269}," methods",[175,839,273],{"class":212},[175,841,743],{"class":216},[175,843,281],{"class":212},[175,845,846],{"class":185},"POST",[175,848,281],{"class":212},[175,850,768],{"class":216},[175,852,435],{"class":212},[175,854,855],{"class":269}," grant_type",[175,857,273],{"class":212},[175,859,226],{"class":212},[175,861,862],{"class":185},"once",[175,864,281],{"class":212},[175,866,867],{"class":212}," }\n",[175,869,870],{"class":177,"line":319},[175,871,872],{"class":216},"    ]\n",[175,874,875],{"class":177,"line":328},[175,876,877],{"class":212},"  },\n",[175,879,880,882,884,886,888,890],{"class":177,"line":333},[175,881,290],{"class":269},[175,883,273],{"class":212},[175,885,226],{"class":212},[175,887,297],{"class":185},[175,889,281],{"class":212},[175,891,284],{"class":212},[175,893,894,896,898,900,903],{"class":177,"line":357},[175,895,307],{"class":269},[175,897,273],{"class":212},[175,899,226],{"class":212},[175,901,902],{"class":185},"agent+bot@example.com",[175,904,231],{"class":212},[175,906,907,909],{"class":177,"line":382},[175,908,322],{"class":212},[175,910,325],{"class":216},[160,912,914],{"id":913},"delegation-login","Delegation Login",[156,916,917],{},"Login to web applications as a delegated user:",[165,919,921],{"className":199,"code":920,"language":201,"meta":170,"style":170},"const browser = await createGrantedBrowser({\n  rulesFile: './rules.toml',\n  idpUrl: 'https://id.example.com',\n  agentEmail: 'agent+bot@example.com'\n})\n\n// Login as alice via delegation\nawait browser.loginAs({\n  email: 'alice@example.com',\n  delegationToken: '\u003Cdelegation-jwt>'\n})\n\n// Browser now has alice's session\nconst page = await browser.newPage()\nawait page.goto('https://app.example.com/dashboard')\n",[172,922,923,939,953,967,979,985,989,994,1009,1025,1039,1045,1049,1054,1072],{"__ignoreMap":170},[175,924,925,927,929,931,933,935,937],{"class":177,"line":178},[175,926,245],{"class":244},[175,928,248],{"class":216},[175,930,251],{"class":212},[175,932,254],{"class":208},[175,934,217],{"class":257},[175,936,260],{"class":216},[175,938,263],{"class":212},[175,940,941,943,945,947,949,951],{"class":177,"line":234},[175,942,270],{"class":269},[175,944,273],{"class":212},[175,946,226],{"class":212},[175,948,278],{"class":185},[175,950,281],{"class":212},[175,952,284],{"class":212},[175,954,955,957,959,961,963,965],{"class":177,"line":241},[175,956,290],{"class":269},[175,958,273],{"class":212},[175,960,226],{"class":212},[175,962,297],{"class":185},[175,964,281],{"class":212},[175,966,284],{"class":212},[175,968,969,971,973,975,977],{"class":177,"line":266},[175,970,307],{"class":269},[175,972,273],{"class":212},[175,974,226],{"class":212},[175,976,902],{"class":185},[175,978,231],{"class":212},[175,980,981,983],{"class":177,"line":287},[175,982,322],{"class":212},[175,984,325],{"class":216},[175,986,987],{"class":177,"line":304},[175,988,238],{"emptyLinePlaceholder":237},[175,990,991],{"class":177,"line":319},[175,992,993],{"class":390},"// Login as alice via delegation\n",[175,995,996,998,1000,1002,1005,1007],{"class":177,"line":328},[175,997,360],{"class":208},[175,999,345],{"class":216},[175,1001,348],{"class":212},[175,1003,1004],{"class":257},"loginAs",[175,1006,260],{"class":216},[175,1008,263],{"class":212},[175,1010,1011,1014,1016,1018,1021,1023],{"class":177,"line":333},[175,1012,1013],{"class":269},"  email",[175,1015,273],{"class":212},[175,1017,226],{"class":212},[175,1019,1020],{"class":185},"alice@example.com",[175,1022,281],{"class":212},[175,1024,284],{"class":212},[175,1026,1027,1030,1032,1034,1037],{"class":177,"line":357},[175,1028,1029],{"class":269},"  delegationToken",[175,1031,273],{"class":212},[175,1033,226],{"class":212},[175,1035,1036],{"class":185},"\u003Cdelegation-jwt>",[175,1038,231],{"class":212},[175,1040,1041,1043],{"class":177,"line":382},[175,1042,322],{"class":212},[175,1044,325],{"class":216},[175,1046,1047],{"class":177,"line":387},[175,1048,238],{"emptyLinePlaceholder":237},[175,1050,1051],{"class":177,"line":394},[175,1052,1053],{"class":390},"// Browser now has alice's session\n",[175,1055,1056,1058,1060,1062,1064,1066,1068,1070],{"class":177,"line":415},[175,1057,245],{"class":244},[175,1059,338],{"class":216},[175,1061,251],{"class":212},[175,1063,254],{"class":208},[175,1065,345],{"class":216},[175,1067,348],{"class":212},[175,1069,351],{"class":257},[175,1071,354],{"class":216},[175,1073,1074,1076,1078,1080,1082,1084,1086,1089,1091],{"class":177,"line":441},[175,1075,360],{"class":208},[175,1077,363],{"class":216},[175,1079,348],{"class":212},[175,1081,368],{"class":257},[175,1083,260],{"class":216},[175,1085,281],{"class":212},[175,1087,1088],{"class":185},"https://app.example.com/dashboard",[175,1090,281],{"class":212},[175,1092,325],{"class":216},[1094,1095,1097],"callout",{"type":1096},"info",[156,1098,1099,1100,1103,1104,348],{},"Delegation tokens are created via ",[611,1101,1102],{"href":58},"grapes delegate"," or the ",[611,1105,1106],{"href":25},"Delegation API",[160,1108,1110],{"id":1109},"api","API",[1112,1113,1115],"h3",{"id":1114},"grantedbrowser",[172,1116,1117],{},"GrantedBrowser",[1119,1120,1121,1134],"table",{},[1122,1123,1124],"thead",{},[1125,1126,1127,1131],"tr",{},[1128,1129,1130],"th",{},"Property / Method",[1128,1132,1133],{},"Description",[1135,1136,1137,1151,1161,1171],"tbody",{},[1125,1138,1139,1145],{},[1140,1141,1142],"td",{},[172,1143,1144],{},"context",[1140,1146,1147,1148],{},"Underlying Playwright ",[172,1149,1150],{},"BrowserContext",[1125,1152,1153,1158],{},[1140,1154,1155],{},[172,1156,1157],{},"newPage()",[1140,1159,1160],{},"Create a new page with route interception enabled",[1125,1162,1163,1168],{},[1140,1164,1165],{},[172,1166,1167],{},"loginAs(options)",[1140,1169,1170],{},"Login as a delegated user",[1125,1172,1173,1178],{},[1140,1174,1175],{},[172,1176,1177],{},"close()",[1140,1179,1180],{},"Close the browser and clean up",[160,1182,1184],{"id":1183},"use-cases","Use Cases",[677,1186,1187,1193,1199,1205],{},[680,1188,1189,1192],{},[683,1190,1191],{},"Web scraping with access control"," — Only allow requests to approved domains",[680,1194,1195,1198],{},[683,1196,1197],{},"Automated testing"," — Test grant approval flows in a real browser",[680,1200,1201,1204],{},[683,1202,1203],{},"Agent browser automation"," — Let agents browse the web with human-approved boundaries",[680,1206,1207,1210],{},[683,1208,1209],{},"Delegation workflows"," — Act on behalf of users who granted delegation permissions",[1212,1213,1214],"style",{},"html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}",{"title":170,"searchDepth":241,"depth":234,"links":1216},[1217,1218,1219,1220,1221,1222,1223,1226],{"id":162,"depth":234,"text":163},{"id":195,"depth":234,"text":196},{"id":460,"depth":234,"text":461},{"id":605,"depth":234,"text":606},{"id":671,"depth":234,"text":672},{"id":913,"depth":234,"text":914},{"id":1109,"depth":234,"text":1110,"children":1224},[1225],{"id":1114,"depth":241,"text":1117},{"id":1183,"depth":234,"text":1184},"Grant-aware headless browser with route interception and delegation login.","md",null,{},{"title":73,"description":1227},"HuD03uEVQnM5DKxo8X5rdVPUkPG5ydrun4IhuQTju4c",[1234,1236],{"title":69,"path":70,"stem":71,"description":1235,"children":-1},"Agent HTTP gateway with grant-based access control.",{"title":77,"path":78,"stem":79,"description":1237,"children":-1},"DNS-based identity for humans and agents.",1774221117377]