PageSourceSearch

https://bastio.com/assets/policies-Cqa75YIv.js

js bastio.com collected 2026-10-09 22:56:07 UTC 29,631 bytes, 176 lines download raw bytes

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.