1import{j as e}from"./index-BkgFiefw.js";let r={title:"Policies",description:"Block, Redirect, observe-only â and how to tune the policy per AI domain."},h=[{href:"/docs/cloud/extension/permissions"},{href:"/docs/cloud/extension/install"}],a={contents:[{heading:void 0,content:`The extension's behavior is controlled by your workspace's 2governance policy â the same shape as the gateway's security 3profile, with a few extension-specific extras for handling 4in-browser interception. Policy changes take effect on the next 5extension policy refresh (within 60 minutes; the dashboard offers 6a "Force refresh" button for immediate rollout).`},{heading:"the-four-modes",content:"Mode"},{heading:"the-four-modes",content:"What happens when the user submits a sensitive prompt"},{heading:"the-four-modes",content:"Observe-only (default for free audit)"},{heading:"the-four-modes",content:"Nothing user-visible. The decision + prompt hash are reported to your server."},{heading:"the-four-modes",content:"Warn"},{heading:"the-four-modes",content:'A non-blocking banner in the page, "this prompt contains sensitive content". User chooses to send anyway.'},{heading:"the-four-modes",content:"Block"},{heading:"the-four-modes",content:`The submit is intercepted. A modal explains why, lists the detected categories, and offers a "Don't send" button.`},{heading:"the-four-modes",content:"Block + Redirect"},{heading:"the-four-modes",content:'Same as Block, plus an "Open this in Workspace instead" CTA â clicking opens your branded chat with the prompt pre-filled.'},{heading:"the-four-modes",content:`Modes can vary per AI domain. A common pattern: observe-only on 7internal-tooling AI sites you trust, Block + Redirect on 8chat.openai.com to push prompts back into your tenant.`},{heading:"policy-shape",content:`Created in Workspace â Governance â Policy. Saved as JSON; 9the dashboard surface mirrors the JSON 1:1.`},{heading:"policy-shape",content:`The redirect_target is your Workspace host; redirect_prefill 10controls whether the prompt is forwarded along with the redirect 11(default: yes â that's the whole point of Redirect).`},{heading:"per-domain-overrides",content:`The dashboard's domain list comes pre-populated with the major 12hosted AI sites:`},{heading:"per-domain-overrides",content:"chat.openai.com / chatgpt.com"},{heading:"per-domain-overrides",content:"claude.ai"},{heading:"per-domain-overrides",content:"gemini.google.com"},{heading:"per-domain-overrides",content:"copilot.microsoft.com"},{heading:"per-domain-overrides",content:"perplexity.ai"},{heading:"per-domain-overrides",content:"mistral.ai / chat.mistral.ai"},{heading:"per-domain-overrides",content:"and ~20 more"},{heading:"per-domain-overrides",content:"You can:"},{heading:"per-domain-overrides",content:`Add a domain. Custom overrides in the dashboard. Useful 13for internal-tools subdomains or recently-launched AI sites 14not yet on Bastio's default list.`},{heading:"per-domain-overrides",content:"Remove a domain. Stops monitoring that site entirely."},{heading:"per-domain-overrides",content:"Override mode. Per-domain mode wins over default_mode."},{heading:"per-domain-overrides",content:`Custom redirect_target per domain. Useful when different 15teams have different sanctioned destinations.`},{heading:"per-domain-overrides",content:"Domain-list changes audit as domain.governance.updated."},{heading:"how-the-user-experience-flows",content:"Block + Redirect modal (the dashboard customizes the copy):"},{heading:"how-the-user-experience-flows",content:`Clicking "Open in Acme AI" opens chat.acme.com (your 16custom-domain Workspace) with the prompt URL-parameter-encoded. 17The Workspace landing page reads the parameter, runs the 18gateway's redaction, and starts the conversation.`},{heading:"how-the-user-experience-flows",content:`If "Don't send" is clicked, the prompt is dropped â never sent 19to the AI site, never persisted anywhere except the audit 20event.`},{heading:"telemetry-per-mode",content:"Mode"},{heading:"telemetry-per-mode",content:"Audit event"},{heading:"telemetry-per-mode",content:"Observe"},{heading:"telemetry-per-mode",content:"governance.observed"},{heading:"telemetry-per-mode",content:"Warn"},{heading:"telemetry-per-mode",content:"governance.warned (one row per warning shown)"},{heading:"telemetry-per-mode",content:"Block"},{heading:"telemetry-per-mode",content:"governance.blocked (typed categories)"},{heading:"telemetry-per-mode",content:"Block + Redirect (clicked)"},{heading:"telemetry-per-mode",content:"governance.redirected"},{heading:"telemetry-per-mode",content:"Block + Redirect (declined)"},{heading:"telemetry-per-mode",content:"governance.blocked"},{heading:"telemetry-per-mode",content:`All events feed the same dashboard heatmaps and the pilot-report 21PDF.`},{heading:"streaming-detection",content:`Some AI sites support partial-prompt streaming (typing â autocomplete 22â submit). The extension detects sensitive content as the user 23types, before submit, in some-but-not-all sites. Where streaming 24detection isn't possible, detection happens at submit-time â 25which is still ahead of the network layer, so the prompt never 26reaches the AI site.`},{heading:"streaming-detection",content:`Streaming detection coverage is on the v2.1 roadmap to expand to 27all sites in the default list.`},{heading:"custom-rules",content:"Beyond the OSS detector catalog, governance policy supp
27orts:"},{heading:"custom-rules",content:`Topic deny lists. "Never let prompts about competitor X 28through." Free-text matched with a small classifier.`},{heading:"custom-rules",content:`Custom regex. Rare, escape hatch for org-specific patterns 29(e.g. internal customer ID format that doesn't fit standard 30PII detectors).`},{heading:"custom-rules",content:`Both are configurable in the policy editor. Custom regex must be 31profiled â a slow regex on a fast-typing user creates noticeable 32input lag.`},{heading:"policy-versioning",content:`Every save bumps the policy version. The extension's heartbeat 33includes its current version; the dashboard's Installations tab 34shows which version each browser is running. After a save, plan 35on ~10 minutes to reach steady state across a deployment of 36hundreds of browsers.`},{heading:"common-questions",content:`"Can users disable the extension?" Not when MDM-installed. 37The browser hides the disable / remove controls. Manually- 38installed deployments are user-controllable.`},{heading:"common-questions",content:`"What if the AI site changes its DOM?" The extension's 39selectors are versioned per site. Bastio publishes selector 40updates through the same auto-update channel as feature 41releases. We track ChatGPT / Claude / Gemini changes 42proactively.`},{heading:"common-questions",content:`"Does it work on private windows?" Yes for Chrome, if the 43MDM policy enables incognito access for the extension. 44Default policy: enabled.`},{heading:"next",content:`Permissions â what data 45the extension sees.`},{heading:"next",content:"Install â rolling it out."}],headings:[{id:"the-four-modes",content:"The four modes"},{id:"policy-shape",content:"Policy shape"},{id:"per-domain-overrides",content:"Per-domain overrides"},{id:"how-the-user-experience-flows",content:"How the user experience flows"},{id:"telemetry-per-mode",content:"Telemetry per mode"},{id:"streaming-detection",content:"Streaming detection"},{id:"custom-rules",content:"Custom rules"},{id:"policy-versioning",content:"Policy versioning"},{id:"common-questions",content:"Common questions"},{id:"next",content:"Next"}]};const l=[{depth:2,url:"#the-four-modes",title:e.jsx(e.Fragment,{children:"The four modes"})},{depth:2,url:"#policy-shape",title:e.jsx(e.Fragment,{children:"Policy shape"})},{depth:2,url:"#per-domain-overrides",title:e.jsx(e.Fragment,{children:"Per-domain overrides"})},{depth:2,url:"#how-the-user-experience-flows",title:e.jsx(e.Fragment,{children:"How the user experience flows"})},{depth:2,url:"#telemetry-per-mode",title:e.jsx(e.Fragment,{children:"Telemetry per mode"})},{depth:2,url:"#streaming-detection",title:e.jsx(e.Fragment,{children:"Streaming detection"})},{depth:2,url:"#custom-rules",title:e.jsx(e.Fragment,{children:"Custom rules"})},{depth:2,url:"#policy-versioning",title:e.jsx(e.Fragment,{children:"Policy versioning"})},{depth:2,url:"#common-questions",title:e.jsx(e.Fragment,{children:"Common questions"})},{depth:2,url:"#next",title:e.jsx(e.Fragment,{children:"Next"})}];function n(i){const s={a:"a",code:"code",h2:"h2",li:"li",p:"p",pre:"pre",span:"span",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...i.components};return e.jsxs(e.Fragment,{children:[e.jsxs(s.p,{children:[`The extension's behavior is controlled by your workspace's 46`,e.jsx(s.strong,{children:"governance policy"}),` â the same shape as the gateway's security 47profile, with a few extension-specific extras for handling 48in-browser interception. Policy changes take effect on the next 49extension policy refresh (within 60 minutes; the dashboard offers 50a "Force refresh" button for immediate rollout).`]}),` 51`,e.jsx(s.h2,{id:"the-four-modes",children:"The four modes"}),` 52`,e.jsxs(s.table,{children:[e.jsx(s.thead,{children:e.jsxs(s.tr,{children:[e.jsx(s.th,{children:"Mode"}),e.jsx(s.th,{children:"What happens when the user submits a sensitive prompt"})]})}),e.jsxs(s.tbody,{children:[e.jsxs(s.tr,{children:[e.jsxs(s.td,{children:[e.jsx(s.strong,{children:"Observe-only"})," (default for free audit)"]}),e.jsx(s.td,{children:"Nothing user-visible. The decision + prompt hash are reported to your server."})]}),e.jsxs(s.tr,{children:[e.jsx(s.td,{children:e.jsx(s.strong,{children:"Warn"})}),e.jsx(s.td,{children:'A non-blocking banner in the page, "this prompt contains sensitive content". User chooses to
52send anyway.'})]}),e.jsxs(s.tr,{children:[e.jsx(s.td,{children:e.jsx(s.strong,{children:"Block"})}),e.jsx(s.td,{children:`The submit is intercepted. A modal explains why, lists the detected categories, and offers a "Don't send" button.`})]}),e.jsxs(s.tr,{children:[e.jsx(s.td,{children:e.jsx(s.strong,{children:"Block + Redirect"})}),e.jsx(s.td,{children:'Same as Block, plus an "Open this in Workspace instead" CTA â clicking opens your branded chat with the prompt pre-filled.'})]})]})]}),` 53`,e.jsx(s.p,{children:`Modes can vary per AI domain. A common pattern: observe-only on 54internal-tooling AI sites you trust, Block + Redirect on 55chat.openai.com to push prompts back into your tenant.`}),` 56`,e.jsx(s.h2,{id:"policy-shape",children:"Policy shape"}),` 57`,e.jsxs(s.p,{children:["Created in ",e.jsx(s.strong,{children:"Workspace â Governance â Policy"}),`. Saved as JSON; 58the dashboard surface mirrors the JSON 1:1.`]}),` 59`,e.jsx(e.Fragment,{children:e.jsx(s.pre,{className:"shiki shiki-themes github-light github-dark",style:{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},tabIndex:"0",icon:'<svg viewBox="0 0 24 24"><path d="M 6,1 C 4.354992,1 3,2.354992 3,4 v 16 c 0,1.645008 1.354992,3 3,3 h 12 c 1.645008,0 3,-1.354992 3,-3 V 8 7 A 1.0001,1.0001 0 0 0 20.707031,6.2929687 l -5,-5 A 1.0001,1.0001 0 0 0 15,1 h -1 z m 0,2 h 7 v 3 c 0,1.645008 1.354992,3 3,3 h 3 v 11 c 0,0.564129 -0.435871,1 -1,1 H 6 C 5.4358712,21 5,20.564129 5,20 V 4 C 5,3.4358712 5.4358712,3 6,3 Z M 15,3.4140625 18.585937,7 H 16 C 15.435871,7 15,6.5641288 15,6 Z" fill="currentColor" /></svg>',children:e.jsxs(s.code,{children:[e.jsx(s.span,{className:"line",children:e.jsx(s.span,{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},children:"{"})}),` 60`,e.jsxs(s.span,{className:"line",children:[e.jsx(s.span,{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},children:' "default_mode"'}),e.jsx(s.span,{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},children:": "}),e.jsx(s.span,{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},children:'"observe_only"'}),e.jsx(s.span,{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},children:","})]}),` 61`,e.jsxs(s.span,{className:"line",children:[e.jsx(s.span,{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},children:' "rules"'}),e.jsx(s.span,{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},children:": {"})]}),` 62`,e.jsxs(s.span,{className:"line",children:[e.jsx(s.span,{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},children:' "pii_email"'}),e.jsx(s.span,{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},children:": { "}),e.jsx(s.span,{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},children:'"threshold"'}),e.jsx(s.span,{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},children:": "}),e.jsx(s.span,{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},children:"0.5"}),e.jsx(s.span,{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},children:", "}),e.jsx(s.span,{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},children:'"action"'}),e.jsx(s.span,{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},children:": "}),e.jsx(s.span,{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},children:'"block"'}),e.jsx(s.span,{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},children:" },"})]}),` 63`,e.jsxs(s.span,{className:"line",children:[e.jsx(s.span,{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},children:' "pii_credit_card"'}),e.jsx(s.span,{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},children:":{ "}),e.jsx(s.span,{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},children:'"threshold"'}),e.jsx(s.span,{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},children:": "}),e.jsx(s.span,{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},children:"0.5"}),e.jsx(s.span,{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},children:", "}),e.jsx(s.span,{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},children:'"action"'}),e.jsx(s.span,{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},children:": "}),e.jsx(s.span,{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},children:'"block"'}),e.jsx(s.span,{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},children:" },"})]}),` 64`,e.jsxs(s.span,{className:"line",children:[e.jsx(s.span,{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},children:' "secrets"'}),e.jsx(s.span,{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},children:": { "}),e.jsx(s.span,{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},children:'"threshold"'}),e.jsx(s.span,{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},children:": "}),e.jsx(s.span,{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},children:"0.7"}),e.jsx(s.span,{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},children:", "}),e.jsx(s.span,{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},children:'"action"'}),e.jsx(s.span,{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},children:": "}),e.jsx(s.span,{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},children:'"block"'}),e.jsx(s.span,{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},children:" },"})]}),` 65`,e.jsxs(s.span,{className:"line",children:[e.jsx(s.span,{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},children:' "code"'}),e.jsx(s.span,{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},children:": { "}),e.jsx(s.span,{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},children:'"threshold"'}),e.jsx(s.span,{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},children:": "}),e.jsx(s.span,{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},children:"0.8"}),e.jsx(s.span,{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},children:", "}),e.jsx(s.span,{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},children:'"action"'}),e.jsx(s.span,{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},children:": "}),e.jsx(s.span,{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},children:'"warn"'}),e.jsx(s.span,{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},children:" },"})]}),` 66`,e.jsxs(s.span,{className:"line",children:[e.jsx(s.span,{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},children:' "jailbreak"'}),e.jsx(s.span,{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},children:": { "}),e.jsx(s.span,{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},children:'"threshold"'}),e.jsx(s.span,{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},children:": "}),e.jsx(s.span,{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},children:"0.6"}),e.jsx(s.span,{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},children:", "}),e.jsx(s.span,{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},children:'"action"'}),e.jsx(s.span,{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},children:": "}),e.jsx(s.span,{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},children:'"block"'}),e.jsx(s.span,{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},children:" }"})]}),` 67`,e.jsx(s.span,{className:"line",children:e.jsx(s.span,{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},children:" },"})}),` 68`,e.jsxs(s.span,{className:"line",children:[e.jsx(s.span,{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},children:' "domains"'}),e.jsx(s.span,{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},children:": {"})]}),` 69`,e.jsxs(s.span,{className:"line",children:[e.jsx(s.span,{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},children:' "chat.openai.com"'}),e.jsx(s.span,{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},children:": { "}),e.jsx(s.span,{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},children:'"mode"'}),e.jsx(s.span,{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},children:": "}),e.jsx(s.span,{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},children:'"block_redirect"'}),e.jsx(s.span,{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},children:" },"})]}),` 70`,e.jsxs(s.span,{className:"line",children:[e.jsx(s.span,{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},children:' "claude.ai"'}),e.jsx(s.span,{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},children:": { "}),e.jsx(s.span,{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},children:'"mode"'}),e.jsx(s.span,{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},children:": "}),e.jsx(s.span,{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},children:'"block_redirect"'}),e.jsx(s.span,{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},children:" },"})]}),` 71`,e.jsxs(s.span,{className:"line",children:[e.jsx(s.span,{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},children:' "internal-ai.acme.com"'}),e.jsx(s.span,{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},children:": { "}),e.jsx(s.span,{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},children:'"mode"'}),e.jsx(s.span,{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},children:": "}),e.jsx(s.span,{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},children:'"observe_only"'}),e.jsx(s.span,{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},children:" }"})]}),` 72`,e.jsx(s.span,{className:"line",children:e.jsx(s.span,{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},children:" },"})}),` 73`,e.jsxs(s.span,{className:"line",children:[e.jsx(s.span,{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},children:' "redirect_target"'}),e.jsx(s.span,{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},children:": "}),e.jsx(s.span,{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},children:'"https://chat.acme.com"'}),e.jsx(s.span,{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},children:","})]}),` 74`,e.jsxs(s.span,{className:"line",children:[e.jsx(s.span,{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},children:' "redirect_prefill"'}),e.jsx(s.span,{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},children:": "}),e.jsx(s.span,{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},children:"true"})]}),` 75`,e.jsx(s.span,{className:"line",children:e.jsx(s.span,{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},children:"}"})})]})})}),`
76`,e.jsxs(s.p,{children:["The ",e.jsx(s.code,{children:"redirect_target"})," is your Workspace host; ",e.jsx(s.code,{children:"redirect_prefill"}),` 77controls whether the prompt is forwarded along with the redirect 78(default: yes â that's the whole point of Redirect).`]}),` 79`,e.jsx(s.h2,{id:"per-domain-overrides",children:"Per-domain overrides"}),` 80`,e.jsx(s.p,{children:`The dashboard's domain list comes pre-populated with the major 81hosted AI sites:`}),` 82`,e.jsxs(s.ul,{children:[` 83`,e.jsx(s.li,{children:"chat.openai.com / chatgpt.com"}),` 84`,e.jsx(s.li,{children:"claude.ai"}),` 85`,e.jsx(s.li,{children:"gemini.google.com"}),` 86`,e.jsx(s.li,{children:"copilot.microsoft.com"}),` 87`,e.jsx(s.li,{children:"perplexity.ai"}),` 88`,e.jsx(s.li,{children:"mistral.ai / chat.mistral.ai"}),` 89`,e.jsx(s.li,{children:"and ~20 more"}),` 90`]}),` 91`,e.jsx(s.p,{children:"You can:"}),` 92`,e.jsxs(s.ul,{children:[` 93`,e.jsxs(s.li,{children:[e.jsx(s.strong,{children:"Add a domain."}),` Custom overrides in the dashboard. Useful 94for internal-tools subdomains or recently-launched AI sites 95not yet on Bastio's default list.`]}),` 96`,e.jsxs(s.li,{children:[e.jsx(s.strong,{children:"Remove a domain."})," Stops monitoring that site entirely."]}),` 97`,e.jsxs(s.li,{children:[e.jsx(s.strong,{children:"Override mode."})," Per-domain mode wins over ",e.jsx(s.code,{children:"default_mode"}),"."]}),` 98`,e.jsxs(s.li,{children:[e.jsx(s.strong,{children:"Custom redirect_target per domain."}),` Useful when different 99teams have different sanctioned destinations.`]}),` 100`]}),` 101`,e.jsxs(s.p,{children:["Domain-list changes audit as ",e.jsx(s.code,{children:"domain.governance.updated"}),"."]}),` 102`,e.jsx(s.h2,{id:"how-the-user-experience-flows",children:"How the user experience flows"}),` 103`,e.jsxs(s.p,{children:[e.jsx(s.strong,{children:"Block + Redirect modal"})," (the dashboard customizes the copy):"]}),` 104`,e.jsx(e.Fragment,{children:e.jsx(s.pre,{className:"shiki shiki-themes github-light github-dark",style:{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},tabIndex:"0",icon:'<svg viewBox="0 0 24 24"><path d="M 6,1 C 4.354992,1 3,2.354992 3,4 v 16 c 0,1.645008 1.354992,3 3,3 h 12 c 1.645008,0 3,-1.354992 3,-3 V 8 7 A 1.0001,1.0001 0 0 0 20.707031,6.2929687 l -5,-5 A 1.0001,1.0001 0 0 0 15,1 h -1 z m 0,2 h 7 v 3 c 0,1.645008 1.354992,3 3,3 h 3 v 11 c 0,0.564129 -0.435871,1 -1,1 H 6 C 5.4358712,21 5,20.564129 5,20 V 4 C 5,3.4358712 5.4358712,3 6,3 Z M 15,3.4140625 18.585937,7 H 16 C 15.435871,7 15,6.5641288 15,6 Z" fill="currentColor" /></svg>',children:e.jsxs(s.code,{children:[e.jsx(s.span,{className:"line",children:e.jsx(s.span,{children:"ââââââââââââââââââââââââââââââââââââââââââââ"})}),` 105`,e.jsx(s.span,{className:"line",children:e.jsx(s.span,{children:"â â Sensitive content detected â"})}),` 106`,e.jsx(s.span,{className:"line",children:e.jsx(s.span,{children:"â â"})}),` 107`,e.jsx(s.span,{className:"line",children:e.jsx(s.span,{children:"â Your prompt contains: â"})}),` 108`,e.jsx(s.span,{className:"line",children:e.jsx(s.span,{children:"â ⢠Email address â"})}),` 109`,e.jsx(s.span,{className:"line",children:e.jsx(s.span,{children:"â ⢠API key â"})}),` 110`,e.jsx(s.span,{className:"line",children:e.jsx(s.span,{children:"â â"})}),` 111`,e.jsx(s.span,{className:"line",children:e.jsx(s.span,{children:"â This violates Acme's AI policy. â"})}),` 112`,e.jsx(s.span,{className:"line",children:e.jsx(s.span,{children:"â â"})}),` 113`,e.jsx(s.span,{className:"line",children:e.jsx(s.span,{children:"â Open this in Acme AI instead, where â"})}),` 114`,e.jsx(s.span,{className:"line",children:e.jsx(s.span,{children:"â we'll redact the sensitive parts and â"})}),` 115`,e.jsx(s.span,{className:"line",children:e.jsx(s.span,{children:"â keep the prompt internal. â"})}),` 116`,e.jsx(s.span,{className:"line",children:e.jsx(s.span,{children:"â â"})}),` 117`,e.jsx(s.span,{className:"line",children:e.jsx(s.span,{children:"â [ Open in Acme AI ] [ Don't send ] â"})}),` 118`,e.jsx(s.span,{className:"line",children:e.jsx(s.span,{children:"ââââââââââââââââââââââââââââââââââââââââââââ"})})]})})}),` 119`,e.jsxs(s.p,{children:['Clicking "Open in Acme AI" opens ',e.jsx(s.co
119de,{children:"chat.acme.com"}),` (your 120custom-domain Workspace) with the prompt URL-parameter-encoded. 121The Workspace landing page reads the parameter, runs the 122gateway's redaction, and starts the conversation.`]}),` 123`,e.jsx(s.p,{children:`If "Don't send" is clicked, the prompt is dropped â never sent 124to the AI site, never persisted anywhere except the audit 125event.`}),` 126`,e.jsx(s.h2,{id:"telemetry-per-mode",children:"Telemetry per mode"}),` 127`,e.jsxs(s.table,{children:[e.jsx(s.thead,{children:e.jsxs(s.tr,{children:[e.jsx(s.th,{children:"Mode"}),e.jsx(s.th,{children:"Audit event"})]})}),e.jsxs(s.tbody,{children:[e.jsxs(s.tr,{children:[e.jsx(s.td,{children:"Observe"}),e.jsx(s.td,{children:e.jsx(s.code,{children:"governance.observed"})})]}),e.jsxs(s.tr,{children:[e.jsx(s.td,{children:"Warn"}),e.jsxs(s.td,{children:[e.jsx(s.code,{children:"governance.warned"})," (one row per warning shown)"]})]}),e.jsxs(s.tr,{children:[e.jsx(s.td,{children:"Block"}),e.jsxs(s.td,{children:[e.jsx(s.code,{children:"governance.blocked"})," (typed categories)"]})]}),e.jsxs(s.tr,{children:[e.jsx(s.td,{children:"Block + Redirect (clicked)"}),e.jsx(s.td,{children:e.jsx(s.code,{children:"governance.redirected"})})]}),e.jsxs(s.tr,{children:[e.jsx(s.td,{children:"Block + Redirect (declined)"}),e.jsx(s.td,{children:e.jsx(s.code,{children:"governance.blocked"})})]})]})]}),` 128`,e.jsx(s.p,{children:`All events feed the same dashboard heatmaps and the pilot-report 129PDF.`}),` 130`,e.jsx(s.h2,{id:"streaming-detection",children:"Streaming detection"}),` 131`,e.jsx(s.p,{children:`Some AI sites support partial-prompt streaming (typing â autocomplete 132â submit). The extension detects sensitive content as the user 133types, before submit, in some-but-not-all sites. Where streaming 134detection isn't possible, detection happens at submit-time â 135which is still ahead of the network layer, so the prompt never 136reaches the AI site.`}),` 137`,e.jsx(s.p,{children:`Streaming detection coverage is on the v2.1 roadmap to expand to 138all sites in the default list.`}),` 139`,e.jsx(s.h2,{id:"custom-rules",children:"Custom rules"}),` 140`,e.jsx(s.p,{children:"Beyond the OSS detector catalog, governance policy supports:"}),` 141`,e.jsxs(s.ul,{children:[` 142`,e.jsxs(s.li,{children:[e.jsx(s.strong,{children:"Topic deny lists."}),` "Never let prompts about competitor X 143through." Free-text matched with a small classifier.`]}),` 144`,e.jsxs(s.li,{children:[e.jsx(s.strong,{children:"Custom regex."}),` Rare, escape hatch for org-specific patterns 145(e.g. internal customer ID format that doesn't fit standard 146PII detectors).`]}),` 147`]}),` 148`,e.jsx(s.p,{children:`Both are configurable in the policy editor. Custom regex must be 149profiled â a slow regex on a fast-typing user creates noticeable 150input lag.`}),` 151`,e.jsx(s.h2,{id:"policy-versioning",children:"Policy versioning"}),` 152`,e.jsx(s.p,{children:`Every save bumps the policy version. The extension's heartbeat 153includes its current version; the dashboard's Installations tab 154shows which version each browser is running. After a save, plan 155on ~10 minutes to reach steady state across a deployment of 156hundreds of browsers.`}),` 157`,e.jsx(s.h2,{id:"common-questions",children:"Common questions"}),` 158`,e.jsxs(s.ul,{children:[` 159`,e.jsxs(s.li,{children:[e.jsx(s.strong,{children:'"Can users disable the extension?"'}),` Not when MDM-installed. 160The browser hides the disable / remove controls. Manually- 161installed deployments are user-controllable.`]}),` 162`,e.jsxs(s.li,{children:[e.jsx(s.strong,{children:'"What if the AI site changes its DOM?"'}),` The extension's 163selectors are versioned per site. Bastio publishes selector 164updates through the same auto-update channel as feature 165releases. We track ChatGPT / Claude / Gemini changes 166proactively.`]}),` 167`,e.jsxs(s.li,{children:[e.jsx(s.strong,{children:'"Does it work on private windows?"'}),` Yes for Chrome, if the 168MDM policy enables incognito access for the extension. 169Default policy: enabled.`]}),` 170`]}),` 171`,e.jsx(s.h2,{id:"next",children:"Next"}),` 172`,e.jsxs(s.ul,{children:[` 173`,e.jsxs(s.li,{children:[e.jsx(s.a,{href:"/docs/cloud/extension/permissions",children:"Permissions"}),` â what data 174the extension sees.`]}),` 175`,e.jsxs(s.li,{children:[e.jsx(s.a,{href:"/docs/cloud/extension/install",children:"Install"})," â rolling it out."]}),` 176`]})]})}function o(i={}){const{wrapper:s}=i.components||{};return s?e.jsx(s,{...i,children:e.jsx(n,{...i})}):n(i)}export{o as default,h as extractedReferences,r as frontmatter,a as structuredData,l as toc};
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.