Documentation
Protected EnvironmentsBrowser extension

Browser extension

Provision, install, test, and roll out Orthalon browser protection for supported AI websites.

Plan requirement: Monitor discovers and evaluates without enforcement. Protect, Business, and Enterprise can apply active decisions.

The extension detects sensitive prompt text and small readable file contents locally before a supported AI website sends them. Business and Enterprise can hold supported PDF, Office, spreadsheet, ZIP, and larger readable files while a private short-lived analysis job extracts and checks their content. It can distinguish a known corporate account from a personal or unknown account when the site exposes enough account context, then discover, redact, coach, request approval, or block according to the current policy bundle.

Install the pilot extension

Until the Chrome Web Store listing is available, approved pilot users can load the packaged Orthalon extension directly. This installation method is for desktop Chrome and does not update automatically. A managed work or school browser may prevent Developer Mode; contact your browser administrator if the controls below are unavailable.

  1. Download Orthalon Browser Sensor 1.0.1. Download the SHA-256 checksum if your organization verifies software downloads.
  2. Extract the ZIP into a permanent folder such as Orthalon Browser Sensor. Do not select the ZIP in Chrome, and do not delete or move the extracted folder while the extension is installed.
  3. Enter chrome://extensions in Chrome's address bar.
  4. Turn on Developer mode, then select Load unpacked.
  5. Select the extracted folder that contains manifest.json.
  6. Open Chrome's Extensions menu, pin Orthalon AI Security Sensor, and open its popup.
  7. In Orthalon, open Operations → Sensors & keys, provision a Browser extension key for this user and browser profile, then copy the one-time key into the popup and select Connect browser.
  8. Confirm the popup displays Protection active, matching Applied policy and Latest policy versions, and a recent synchronization time.

The pilot package contains compiled extension code and the public Orthalon ingest address. It does not contain an Ably API key, sensor key, database credential, private key, environment file, or source map. The browser sensor key is added after installation, is scoped to the browser environment and assigned member, and remains in extension-only storage on that browser.

For updates, download the new version, replace the files inside the existing extracted folder without changing that folder's path, then select Reload on chrome://extensions. Keeping the path stable preserves the unpacked extension identity. When the Chrome Web Store edition becomes available, remove the unpacked pilot after installing and enrolling the store edition so both copies do not inspect the same submission.

Provision the pilot

  1. Open Operations → Sensors & keys.
  2. Select Provision sensor, choose Browser extension, keep the 90-day lifetime for the pilot, assign the member whose browser profile will use it, give it a recognizable label, and copy the raw key.
  3. For a local test, open the extension popup and enter only the raw key. The extension already contains the service address from Orthalon's build environment. For production, set sensorKey and optionally genericAdapterEnabled through Chrome/Edge managed extension policy.
  4. Install the packaged pilot build above, or use your managed Chrome/Edge deployment. A Firefox package is available for pilot testing; validate it against your managed Firefox version before broad rollout.
  5. Open the extension popup and confirm enrollment and policy sync.

Orthalon sends a version hint to connected browser sensors after an administrator changes policy, content analysis, custom detectors, or app sanction state. The extension then downloads and validates the new policy from ingest. A five-minute conditional check recovers updates missed while the browser, network, or notification service was unavailable. Users do not need a manual refresh control.

The popup follows the browser language on first use and supports English, German, French, Spanish, Italian, and Polish. Use the translation icon beside the status to choose another language; Orthalon saves that preference locally and applies it to setup, errors, detector explanations, and protection actions.

Treat the sensor key as a user-and-browser credential. It carries the assigned member identity, organization, browser scope, and expiry. Use a separate key per managed member/profile or another documented accountability unit. A shared key attributes every event to the same member. Do not embed a raw key in public documentation, extension source, or a website. Revoke it when the profile is retired.

Chrome's extension service-worker inspector can display the Authorization header used by the extension. This is expected: a device owner or administrator can inspect software and credentials running on that device. Orthalon limits the impact with environment-scoped, assigned, expiring, and revocable keys; the extension also prevents browser cookies and referrer data from accompanying sensor requests. Do not share Network-panel exports or screenshots containing request headers. If a key is exposed, revoke it and provision a replacement.

Production configuration

During the review period, approved users can install the versioned pilot package above. General distribution uses the signed Orthalon extension from its Chrome Web Store listing or force-install enterprise policy. Users do not receive the source repository and do not run or configure Orthalon ingest. Orthalon builds the HTTPS service address into each package. The customer administrator supplies the generated enrollment configuration from Sensors & keys to the extension policy for the published extension ID.

The copied JSON contains the policy values the extension reads:

{
  "sensorKey": "sk_orthalon_replace-with-browser-scoped-key",
  "organizationId": "organization-id-from-enrollment",
  "genericAdapterEnabled": false
}

Your browser-management product may wrap or transport those values differently. Use its extension-policy workflow and the published Orthalon extension ID; do not add a generic Value wrapper unless that product explicitly requires one.

Chrome requires a developer-declared managed-storage schema and validates enterprise policy against it. Orthalon includes this schema in the packaged extension. Confirm the values are visible at chrome://policy, then open the popup and require Protection active, a numeric policy version, and a recent sync before broad deployment. The organization ID pins downloaded bundles to the enrolled tenant. The app-generated JSON contains the three values above. Administrators may add managedAccountType (PERSONAL or CORPORATE) and a normalized managedAccountDomain when browser management can assert that context for the whole profile. Never use a complete email. Page scripts cannot read the key because Orthalon limits extension storage to trusted extension contexts. Chrome documents managed storage in its extension storage reference and limits normal distribution to the Chrome Web Store or managed distribution.

Validate the extension

  1. Visit a supported AI application.
  2. Enter harmless text and confirm no protection message appears.
  3. Enter invented detector test data while the policy is in Monitor mode.
  4. Confirm a metadata-only event appears in Violations and the AI application appears in AI app discovery.
  5. On Protect or higher, activate one pilot policy and test coaching or redaction.
  6. Confirm a hard block cannot be bypassed by an ordinary form submission. Change the policy in Orthalon and confirm the popup receives the new numeric version without user action.
  7. Test Require approval. Orthalon must hold the draft and create a raw-content-free request carrying a nonce-randomized opaque binding digest. An Ably decision notification should trigger one authoritative status read; a bounded fallback read covers missed notifications. The extension must verify that the composer still matches the held state, consume one approved use with the same binding, and only then submit or restore an approved paste. Editing the draft after the request must stop release.
  8. Attach a small synthetic .txt, .csv, .json, source-code, configuration, or log file and confirm its text follows the same policy. These readable files are inspected locally.
  9. On Business or Enterprise, configure Controls → Content analysis and test .pdf, .docx, .pptx, .xlsx, and .zip, plus larger supported text files. Orthalon uses a private, short-lived upload for formats that require server extraction and supports a maximum configured size of 500 MB per file.
  10. Add your company domain under Internal email domains to ignore. Confirm employee@yourcompany.example is ignored while person@external.example still matches the email detector.
  11. Configure protected IPv4/CIDR ranges and at least one synthetic company-specific identifier pattern. Confirm only in-range addresses and matching internal identifiers trigger their policy.
  12. If an adapter can identify account context, test a corporate and personal account separately. Treat Unknown as its own policy value; do not assume that it means corporate.

Managed rollout

For Chrome, Edge, and validated Firefox deployments, distribute the extension with browser management or MDM and provide its managed configuration. Start with an optional pilot, then force-install after false-positive review. Keep the browser-scoped sensor credential in the managed profile and rotate it before its displayed expiration date. No Orthalon service URL is requested from the employee or customer administrator. Do not enroll a profile unless the popup shows Protection active; a browser with no valid current or cached bundle has no active enforcement contract.

Browser coverage boundary

Current first-class rollout targets are Chrome and Edge; Firefox is packaged for managed pilot acceptance. The Safari conversion helper creates an Xcode project from the same extension, but Apple signing, notarization, managed-device installation, and adapter acceptance remain release gates. Mobile apps, personal devices outside management, unsupported page editors, and traffic from native applications require another coverage layer. Business and Enterprise file analysis supports PDF, Word (.docx), PowerPoint (.pptx), Excel (.xlsx), ZIP, CSV, structured data, logs, Markdown, and plain text up to the configured 500 MB limit. Images, audio, video, encrypted/password-protected archives, macro-only content, embedded binary objects, and unsupported nested formats are not claimed as scanned. The generic page adapter is opt-in because broad DOM interception can create false positives.

The package declares broad HTTPS host access so an opted-in generic adapter can register on newly discovered sites and so the service worker can upload to a private presigned R2 address. Static content scripts run only on the named AI sites above. With genericAdapterEnabled: false, the service worker must not register the generic all-HTTPS content script.

Remote analysis caps one browser sensor at 10 pending files or 1 GiB and one organization at 50 pending files or 5 GiB. It rejects mismatched MIME/file identity or completion-time R2 object version, unsafe, duplicate, symlinked, or encrypted ZIP entries, executable/nested archive payloads, Office active or embedded content, active/embedded PDF actions, more than 5,000 entries, more than 1 GiB expanded archive data, excessive compression, malware findings, required-scanner failure, parser timeout, and PDF page overflow. When an applicable active non-ALLOW rule exists, a configured supported-file failure blocks the upload. Monitor mode records the failed analysis without enforcing it. Orthalon deletes the private object and temporary extraction directory after success or failure; the operator also configures a one-day R2 lifecycle backstop. R2 is a private short-lived quarantine bucket: Orthalon never serves or executes its objects, and production analysis uses a private ClamAV-compatible scanner before parsing.

File approval binds the request to the selected bytes. The browser hashes local files in memory. Remote analysis returns an unguessable per-job binding randomized before the file bytes are hashed, not a reusable file hash. The browser combines all selected files into one local fingerprint. It creates a randomized 64-hex binding from a fresh nonce and that local fingerprint. Approval creation and consumption carry the same opaque binding. Raw file content, the nonce, and deterministic file fingerprints are not sent to the approval endpoint. The extension retains the original immutable file references, rejects replacement or reordering, and recomputes the complete selection fingerprint before consumption. Ingest requires the original opaque binding before it consumes the grant.