# AoTool privacy policy

AoTool has no accounts, ads, telemetry, analytics or developer data collection servers. It does not sell data or transmit it to the developer.

## Local tools and page actions

QR codes, structured data and comparisons (JSON, JSON5, Hjson, YAML, TOML), dates, encoding, hashes, random text, SQLite and JWT processing run locally. QR links never open automatically. JWT decoding does not verify signatures. Copy and paste occur only through user actions; the extension does not read the clipboard in the background.

Generate and paste random text is explicitly triggered from the context menu. It writes the generated value to the clipboard and attempts to insert it at the recorded input position, without reading or uploading the field's existing text. If the target expires, the page blocks insertion, or automatic insertion is unsupported, the clipboard is retained and you are prompted to paste manually.

IP selection shortcuts validate IPv4 / IPv6 locally. Messages used to prepare the menu contain only a boolean classification, without the IP text. Copy SSH command combines the selected address with your configured username. Open in VS Code passes the remote address, username and directory to your local VS Code / Remote-SSH installation. The default user (root) and directory (/root) are configurable, stored in storage.local, and synced only when settings sync is enabled. Selecting text or opening the context menu does not initiate a connection.

Selection QR actions read selected text only after you choose the corresponding menu entry. A link to the selection also reads necessary visible context and encodes that text in a fragment URL, without uploading it or using passwords or editable fields for page targeting. Tracking-parameter removal runs locally and removes only recognized common tracking parameters. The original link stays in the current result view's memory so you can restore it.

A formatting context-menu action temporarily reads your selection or page text. The in-page viewer keeps the original content and URL, makes no second request, and is removed on close or Escape. Image QR reading uses already-loaded pixels where possible. If cross-origin restrictions prevent this, it captures the visible page (which may contain other visible information), crops the selected image and decodes it locally. The visible-page QR action uses the entire visible screenshot. Protected pages may require manual text or image input.

Imports into the workspace or quick window are passed through storage.session, deleted after reading, and expire after ten minutes. Expired unread imports are cleaned on the next import; browser-session termination clears session storage. In-page formatting does not persist page contents. Context-menu QR recognition decodes in the background and displays each result immediately in a closable bubble beside the corresponding code. The source image is not persisted. Multiple results provide a draggable close-all control; closing all results or the last result cancels that scan and prevents later results from reopening. Progress and scan errors stay in a closable page bubble; restricted pages may fall back to a short-lived error window. Recognized text can be edited and the edited value copied. Page/link QR content can also be edited, regenerated and downloaded; edits stay only in window memory.

## Requests you initiate

Network debugging contacts the HTTP or WebSocket service you specify only when you click Connect or Send; AI translation triggers are described below. That service can see your IP, URL, headers, body and handshake data; its policies govern its handling of them. HTTP uses credentials: omit, without browser cookies. The browser manages WebSocket Origin, cookies and TLS. HTTPS/WSS encrypt transport; HTTP/WS do not.

HTTP requests require optional permission for the specified protocol and host, covering all ports and paths on that host. Revoke it under Privacy & permissions. Revocation cannot recall sent data. The extension does not automatically follow redirects or accept arbitrary proxy commands from web pages.

## AI translation and selected text

AI translation requires a compatible server, model and any API Key required by that provider. AoTool does not supply model credits; pricing and server retention are determined by your selected provider. Source text has no application-imposed character cap, but provider context/quota limits, browser resources and network limits still apply.

Manual translation sends only after clicking Translate. Standard selection mode is the default: selecting text does not send a request; choose Translate selected text in the context menu to confirm. Quick mode must be enabled manually for the current tab and translates after selection. A draggable status indicator provides a stop button. Navigating to another origin, closing the tab or closing the browser exits quick mode. Inputs and editable regions do not trigger automatic translation; password fields are always excluded. Stopping cannot recall data already sent. Element translation reads only visible text from the chosen element. For embedded buttons with a transparent click layer, only the verified visible caption is read, excluding alternate text in the invisible provider subtree, input values and cross-origin frame contents. Standard mode requires a context action or explicit pick; quick-mode hovering reveals a button or an existing cached translation without making a new provider request. Clicking can initiate translation. Passwords, hidden fields and editable input values are excluded. Changing a language or model in any translation interface only stages that choice; Translate or Refresh must be clicked to send a request. Retranslation from bubbles or translated page text uses the same filtered source without changing saved defaults. Clicking Retranslate repeats authorization, filtering and permission checks, requests the configured service even when a cached result exists, and updates the cache on success.

The default display mode replaces text in place with original-text comparison enabled: the original appears above its translation. Popup mode and disabling the comparison remain available, and a previously saved disabled preference is preserved. These display choices are independent of quick-mode selection and triggering. Force replacement may locally relax wrapping, truncation and height constraints on the selected button or text container so the translation remains fully visible. Restoration reverses only styles still owned by the extension, preserving later website changes. Reversible replacements keep bounded original text and node references only in the page’s isolated-world memory, without separately persisting or syncing those restoration copies. Restoration does not overwrite subsequent website edits. Results for layouts that cannot be safely changed remain available in a bubble or translation history. Translations written into the page are plain text and can be read by that website like other visible page text.

Choosing Translate entire page from the context menu or extension popup processes currently loaded visible text, including text outside the viewport. It does not scroll to trigger lazy or infinite loading, or read hidden, password or editable input values. Collection has block and character budgets and reports truncation. This explicit page authorization is independent of quick mode: the Worker verifies bound digests, filters the text locally, assigns short block identifiers, deduplicates identical filtered text, and sends the page in one request. Complete responses may use compatible dictionaries or arrays with explicit identifiers. Missing, empty, duplicate or unknown identifiers reject the entire response without guessing a mapping; provider truncation is reported separately. Only a complete validated response is applied to the page. Each successful call saves one page history record with its actual metrics, and only a history-save failure is reported; successful saves do not show a notice. Individual paragraphs can seed reusable text results, with statistics explicitly attributed to the original page request. A completed page batch attempts safe inline replacement independently of the local popup/replacement preference, while respecting comparison, force-replacement and structural safeguards. History includes results that cannot be safely inserted. Draggable controls in the top-right corner omit result text and stage language/model choices until Refresh is clicked; the same source is then retranslated without changing saved defaults. Cancellation or incomplete/late responses do not leave partial replacements or trigger automatic per-paragraph retries, and original text can be restored. Stopping cannot recall data already sent to the service.

Translate this image first copies the already-loaded image data at its decoded pixel dimensions and opens a preview without calling an AI service. Same-origin, CORS-loaded, data and blob images require neither another download nor another origin grant; density-based srcset images retain their full resolution. Non-CORS cross-origin images remain protected from pixel extraction by the browser even after they are displayed. If cross-origin pixels cannot be read directly, the extension downloads the original from its precisely authorized image origin; without permission, you must actively allow that origin in the Read original image window. Downloads omit browser cookies and Referer, reject redirects, and verify the source document, media type, byte size and dimensions. A screen-region capture is never substituted for the original image. The tool page also accepts pasted, dropped or selected local image files, decoded locally into a PNG preview without reading remote image URLs or clipboard HTML. Clicking Translate image, when no reusable result exists, sends the preview image, prompt, target language and model to the configured, authorized service; an OpenAI-compatible model supporting image input is required. Text filters cannot redact image pixels: personal information, passwords or other content visible in the image may be read by the provider, so review the image before sending. Returned text is filtered before display and history storage. History contains only the text result, image-source label and call statistics, with no original image or separate transcription of its source text. Images are limited to 5 MiB, 40 million pixels and 16,384 pixels on either side.

A random session-storage key delivers the image once to a trusted extension context, then is deleted. Unread imports expire after ten minutes and are cleaned on later imports. Previews and pending images remain only in tool-page and Worker memory. Upload sessions bind to the tool page and source document, remain valid for at most ten minutes and retain at most four pending images in the Worker. Clearing, leaving the translation tool or closing its page releases its session; source-tab navigation or closure invalidates the session. Worker termination also clears sessions. Cancellation stops waiting and successful-history writes but cannot recall data already received by the service.

Image text results are cached by a SHA-256 digest of the actual PNG bytes together with server, account, model, prompt and language. Hits also verify a second SHA-512 digest of the data URL; filename, image URL and descriptions do not determine image identity. Result entries contain digests, filtered text and call statistics, never source pixels, and share the session-cache limits below with text results. Identical images can reuse results across pages or Worker restarts, but require a new valid image session and checks of the tool document, source document when applicable, and service permission. An old image ID cannot be reused in another document. Hits do not upload the image again or add duplicate history.

Before sending text translations, local rules replace common email addresses, phone numbers, labeled passwords, tokens/keys, identity numbers and long numeric strings with placeholders. Rules cannot identify every secret, including arbitrary unlabeled passwords. The filtered source, system prompt, target language and model go to the configured OpenAI-compatible service, using the API Key for authentication. Model lists are fetched from its `/models` endpoint. Background requests omit browser cookies and do not follow redirects. The service receives the content and IP address under its own policies; the developer receives neither. API Keys are not injected into web pages. API host permission is requested as needed; standard context-menu translation uses temporary active-tab access. API errors are displayed verbatim as plain text and do not enter successful history.

Successful translations, filtered source text and original call statistics may be stored in the extension’s browser-session cache: 1,000 entries by default, with a configurable entry limit and no extension-imposed byte cap, expiring after 24 hours. Results live in a separate IndexedDB database, with a browser-session marker in storage.session. They survive Worker restarts; the next browser session clears the previous snapshot on initialization. Browser quotas and device capacity still apply. They are not written to local/sync storage or cloud-synced, and contain no API Keys or image pixels. Lookup uses a digest of filtered source text together with server, account, model, prompt and target language, followed by an exact comparison of the filtered source. Whole-page results additionally match paragraph order. These limits do not affect durable translation history.

Access by a cached result’s identifier is bound to the current document; another page cannot retrieve a result using that identifier alone. With quick mode enabled, hovering performs a bounded read of current visible text and sends it to the extension Worker for local filtering and cache lookup. The Worker verifies the source, current quick-mode authorization and service permission, allowing matching results to be reused after a refresh or on another page. This lookup sends nothing to the translation provider, never requests a translation automatically on a miss, and adds no duplicate history. Changed text or a miss restores the click entry. Hidden, password and editable input values are excluded. Results returned across documents omit the original page’s title, URL and history source text.

Navigation, tab closure and disabling quick mode clear that document’s cache-access grants; navigation also cancels pending requests. Completed global results remain available for later authorized lookups. Service configuration or account changes cancel relevant requests and clear old access grants while retaining separately keyed results for each configuration. Deleting translation history or revoking service permission clears the global result cache. Changing only element highlighting, display mode or original-text comparison preserves valid cached results.

Configuration (including API Keys) is stored in plaintext in chrome.storage.local; individual translation records are stored in the extension’s local IndexedDB. Neither is synced. On Chrome 140 or later, AoTool restricts local/sync access to trusted extension contexts, preventing content scripts from directly reading configuration. Quick mode stores tab IDs and origins in browser-session storage. Standard-mode and completed-result continuation authorization store only a SHA-256 digest of the source, tab/document identifiers and an expiry, allowing the same source to be translated with another model or language. It expires within ten minutes or when that translation interaction ends. At most 100 completed-result continuation grants are retained per tab, allowing only the same original text to be translated after quick mode is disabled. Whole-page tasks separately bind the collected text digests. Loaded model catalogues are held in session storage under a server/account digest; pages receive model names only. Session data is cleared when the browser closes. Successful history contains filtered source text, translation, target language, the provider-returned model and token usage, API request elapsed time, timestamp and source type, plus filtered page titles and URLs without queries or fragments. Page metadata is not sent to the service. Translation history has no application-imposed entry or total-byte retention cap and does not automatically evict older entries. Browser quotas and available disk space still apply; write failures are reported. Legacy local history is migrated transactionally to IndexedDB before its old storage key is removed; previously pruned records cannot be recovered. The history dialog loads summaries progressively and fetches complete text when expanded or reused. Full-text search, individual deletion and clearing remain available. Failed or cancelled requests do not add successful history. Bubbles render plain text in the web page. Deletion does not clear existing results in the extension tool page, clipboard content or data already received by the provider.

## Saved data and deletion

HTTP requests and responses and WebSocket sent messages are automatically saved by default. WebSocket received messages are not saved by default. Four independent switches control these categories. These are your tool requests, not monitored web-page traffic. Manual snapshots can also save the current request and matching response.

Network records use the extension's local IndexedDB and retain original URLs, tokens, repeated parameters, methods, headers (including credentials), bodies, form fields/files, response headers/text/received bytes, messages, timestamps, status and errors. No redaction, encryption or cloud sync is applied. Only browser-exposed data is available; hidden cookies/headers and encrypted packets are not read. Interrupted or oversized responses retain received portions marked incomplete. Storage failures are reported rather than silently deleting records.

With only response saving enabled, the identifying protocol, host, port, path, method and time remain; request query parameters, headers, bodies and files are omitted. Responses can themselves contain server-echoed input. With only request saving enabled, response payloads and error details are not saved. With both disabled, results remain in page memory unless manually saved. Changing switches neither deletes previous records nor retroactively saves excluded messages.

Restoring a record fills the editor without sending it. Individual, per-path and bulk deletion and clearing all network records are available. Disabled header rows are omitted from requests but retained when request editors are saved. Selected form files are sent only on Send and saved with requests when enabled; their original disk files are unchanged. Unsaved edits require a manual snapshot. Closing a tab does not delete persisted records. HTTP/WS mode changes retain each mode's current logs in page memory; a new request, connection or record replaces that mode's visible logs.

Settings (including theme, language and save switches), random defaults and random history use storage.local. Temporary imports use storage.session. Domain grouping is computed locally using bundled public-suffix data without external queries. Old sessions are migrated once, retaining the old local copy until cleared. Previously redacted or missing data cannot be recovered.

Exports may contain credentials or private content and are managed by you. Deleting records or uninstalling does not remove exported files. Uninstalling removes extension storage, but browser/OS backups and disk recovery are outside the extension's control.

## Random generation

Context-menu defaults store format, length, character groups, custom alphabet, symbol selection and exclusions, but not batch quantity. Generated values from the panel and context menu are saved in plaintext with time, format, source and record ID. At most the latest 1,000 records and 2 MB of serialized JSON are retained (1 KB = 1,024 B); older records are pruned. Saving precedes copying, so failed copying still leaves history. Delete individual or selected history entries; resetting rules does not delete history. Deleting history does not clear existing result fields, other windows, clipboard contents or exports.

Context-menu generation does not read page text or the clipboard. It tries copying, displays a brief badge on success, and otherwise offers an extension result window. Temporary result transfers follow the ten-minute/session rules. Compatibility copying may trigger page copy events. The system manages the clipboard until you replace its contents.

## SQLite and SQL

Only files you choose, drop or paste are read. File paths pasted as plain text are not opened. Database bytes and names are used in a local Worker for table previews and SQL queries, inserts, updates, deletes and schema changes. SQL runs on an in-memory copy; failed, cancelled or timed-out batches discard that batch's changes and retain the last successful database snapshot. Nothing is uploaded or written to extension storage or the original file. The extension does not scan other files or browser databases.

Export explicitly downloads the current SQLite snapshot. Close the database or tab to release its Worker and memory. Copying a cell copies the displayed preview, including any preview truncation. The engine, formatter and WASM are bundled locally, without a CDN. No filesystem or clipboard-read permission is requested.

## Language and permissions

The default language follows the browser: Chinese for zh languages, English otherwise. The lower-left selector stores an optional override locally and synchronizes it across open tool windows. UI text is translated locally; user inputs, SQL, database cells, raw messages and response bodies are not sent to a translation service. Installed extension metadata follows the browser language; new context-menu actions and viewers use the saved preference. No new permissions are needed.

API permissions are activeTab, scripting, contextMenus and storage. A static isolated content script runs in HTTP/S top-level documents to identify right-click targets before the first action; its match patterns require website access. Bounded local inspection distinguishes content cards from blank page areas. Only a boolean menu state and a random context identifier are sent to the extension worker, never page text or URLs. DOM references remain in page memory for at most 30 seconds and are cleared on use, another click or navigation; the worker keeps only temporary target identifiers and document metadata. This observer never starts translation or network requests. Optional HTTP/HTTPS host permissions are used for network requests, configured AI services and page-encoding changes you explicitly apply. Page encoding also requests the optional declarativeNetRequestWithHostAccess permission. Selection scripts are injected for context-menu translation or a manually enabled quick session; standard mode never sends merely selected text. Toolbar or context-menu actions may read the active page title/URL for copying or QR generation. There are no history, cookies, webRequest, camera, clipboard-read or remote-code permissions. Compatibility copy elements are removed after use and restore focus/selection where possible. Restricted pages offer a copy button instead.

Data use is limited to these visible features. Policy and store disclosures will be updated if handling changes.

## Color picking and optional settings sync (0.1.0)

Page color picking captures the visible area only after a context action. A temporary overlay samples pixels and offers clipboard formats. Screenshots are never persisted or uploaded and are released on close / Escape. The workspace and quick menu open a small independent color window. Switch the main browser to the target tab, then click Start picking in the color window to use the browser EyeDropper. Picked values stay in that window’s memory. Pixel colors are opaque; RGBA / HSLA alpha is 1. The page shares the DOM with the overlay and may observe or modify it.

Settings sync is off by default and enabled separately on each device. Enabling it sends only language, accent, theme, random default rules (including custom character sets), network autosave options, color copy format, element-screenshot shape detection, context-menu switches, the default SSH user and the VS Code directory to the browser account's sync service. Sessions, requests, responses, tokens, files, generated history, screenshots and host permissions are excluded. AoTool operates no account or sync server and adds no application-level encryption. Browser privacy terms and account configuration govern transport and remote storage.

Initial setup can prefer cloud values or overwrite them with local preferences; missing remote settings use local values. Subsequent changes follow browser sync events per setting; local settings pending after a failed write are retried first. The browser handles offline delivery and conflicts. A successful timestamp indicates a browser storage operation, not confirmed delivery to another device. Disabling stops new sync operations but keeps existing remote preferences. Uninstalling does not guarantee removal of account sync copies; use the browser account's data management to remove those. Language overrides also participate when sync is enabled.

## Screenshots and page character encoding

Screenshots run only when requested. Full-page capture scrolls and stitches visible pixels, temporarily hides fixed elements and restores page state. Element / canvas and shape captures crop rendered pixels locally. During selection, the viewport image and tab/document-bound token are temporarily stored in storage.session to support repeated copying, saving and adjustments; closing or cancelling removes them. Full-page and scrolling results appear in a temporary bubble on the original page. Preview images remain in isolated script memory and a closed ShadowRoot until closed. Remaining selection sessions expire after ten minutes and are cleaned on subsequent capture actions; session storage clears when the browser closes. Images are never synced or uploaded. Saved PNGs and clipboard images are managed by the user and operating system.

Page encoding optionally requests declarativeNetRequestWithHostAccess and access to the current site when Apply is clicked. A session rule changes only the main document Content-Type charset for that tab and exact URL; it is removed on navigation away, tab closure or restoration. Rules are not synced, and response content is not stored. The browser normally reloads the page, which can send its normal cookies and discard unsaved input. Site grants cover the protocol/host, while implemented rules are restricted to the chosen tab and URL. Toolbar icons use local theme colors without external image services.

Context-action errors are shown as copyable notices on the page for five seconds. If browser restrictions prevent injection, a compact error-only extension window closes after five seconds; no QR-tool redirect is shown.

## Webpage scrolling capture and offline HTML

Webpage scrolling capture runs only when requested, capturing the current tab. Cropping and downward stitching run in local memory; completion, cancellation or closing the page releases the frames. Frames are not uploaded, synced or persisted, except when you explicitly save or copy the result. Screen/window sharing capture has been removed.

Save offline HTML reads the loaded page DOM, visible form values (excluding password, file and hidden-input values), computed styles and readable images, canvas pixels and fonts. Embedding resources may fetch their original URLs: same-origin requests can use that site's credentials, while cross-origin reads omit credentials and remain subject to CORS and page CSP. No additional site grants are requested and no content is uploaded to the developer.

The downloaded single HTML file is a static snapshot with scripts, event handlers and submission actions removed, embedded resources, and CSP blocking network access. Unreadable resources are reported; audio, video, embedded pages and unloaded content are excluded. Full website interaction is not preserved. Export content is not added to extension history or sync storage. Users manage downloaded files. Resource, size, node-count and processing-time limits apply.

## Image tools

Joining, splitting and compression process browser-decodable image files (first frames for animations, rasterized SVG) that you choose, drop or paste. Images and previews remain in workspace memory until the page closes; they are not uploaded, persisted or synced. PNG encoding loads packaged WASM; JPEG and WebP use browser encoders, without contacting a service. Original files are not overwritten; exported images and ZIP archives are managed by you. Re-encoding removes metadata, while retaining the original when no size reduction occurs preserves its metadata. Double-clicking a structured-data key, value or path writes that text to the clipboard without background clipboard reads.

## UI and capture update

The webpage edge button appears after a tool has been used. Recent and pinned tool IDs, visibility and edge position are stored locally in storage.local with bounded lists, without page URLs, page text or usage timestamps. They are not uploaded or synced. Settings can hide the button or clear recents. An isolated script in HTTP/S main documents displays the control; hovering does not read text for translation or make AI requests. Actions validate the current document and retain their existing permission checks. The button is hidden while screenshot pixels are captured.

Page translations can restore existing results from page memory when styles change or the same original text is reconstructed at its structural position. This makes no new AI request, does not overwrite genuinely changed text, and releases node references when the document closes.

Navigation and session-sidebar collapse preferences stay in storage.local and are not synced. Menu visibility remains a syncable setting; registered new tools default to visible. In-page scrolling capture starts only after a user action, hides its controls during frame capture and stitches in the isolated page script's memory. No frames are uploaded or automatically archived.

Screen color picking starts from the entry-button click using native EyeDropper. The reusable result window can be minimized. Only the latest final HEX value and timestamp are passed through storage.session, overwritten on the next pick and cleared when the browser session ends; they are not written to local or sync storage. In-page color picking updates its circular pixel magnifier and values on pointer movement, without copying until a click. Native screen picking does not expose intermediate pointer colors.

Offline HTML includes readable favicons, font rules and SVG icon references within the existing origin and resource limits. Scripts remain disabled and missing resources are reported; no host permissions were added.

Force replacement is off by default. Enabling it attempts in-place display despite layout constraints while retaining protection against overwriting subsequent website edits or reading editable values. The quick-mode element hover delay defaults to 0.5 seconds and can be set from 0 to 10 seconds; it controls when the entry or cached result appears without making a new AI request on hover. Page translation bubbles can be dragged, and clicking elsewhere on the page does not close or cancel translation.

After you start whole-page translation, newly added or changed visible text in that document is translated automatically, including new dialogs. Matching cached results are reused; misses undergo the same sensitive-text filtering before being sent to the selected provider. Hidden, password and editable input values are excluded. Stop, close, restore or navigation ends observation and cancels pending requests, but cannot recall data already sent. New text uses the page's applied model and language.

The edge drawer stores up to five recently used action IDs, including encoding actions; pinned actions have no count cap. Clearing recents preserves pins. It reads only data needed for an explicitly invoked action, and never retains a previous selection or image as a reusable target.

## Request and response modification

The dedicated Requests & responses page and current-site window configure named groups that can combine request headers, response headers, query parameters, and selected Fetch / XHR request and response bodies. New steps are prefilled with the group's current target site, path and priority, and each step can be edited or toggled independently; the executing page origin is shared by the group. Applying a step dialog only updates the editor draft; changes take effect after saving the group. Names, sites, paths, conditions, priorities, header values and replacement contents stay local and are never synced. Importing JSON, raw headers or a local header file fills an editor draft; changes take effect after saving. Dropdown suggestions are built-in values, not collected credentials. Group JSON imports are previewed and imported with parent rules disabled. Explicit exports include complete configuration values; handle the file according to the data you entered.

Header rules request the optional browser rule permission and access to the target site as needed. The browser sets, removes or appends matching request/response headers without reading response bodies. Each Header step can select resource types that must match along with its URL conditions; these types do not restrict parameter or body rules. Request header values are sent to the destination server. Rules match exact scheme, host and port; browser host grants cover all ports and paths on that host.

The group website supplies the default request site and the page on which body changes apply. A blank child request site uses this default. Explicitly choosing and enabling all request domains requires access to all HTTP / HTTPS destinations to cover third-party requests from the configured website. Path conditions still apply. Header rules constrain the direct initiator to that website's domain and subdomains; Chrome does not distinguish the initiator's scheme or port. Fetch / XHR changes remain restricted to the configured page's exact origin. This option never installs an unrestricted global Header rule. Revoking required access disables the group.

Query parameter items can enable “Include page navigation requests”, requesting the existing optional browser rule permission and site access as needed. This changes the actual request URL and address bar during direct navigation, following links, GET form navigation or reloads; POST navigation is unchanged. Existing items default to off; new set/remove items enable navigation where supported. Navigation requires a specific site and wildcard pathname excluding query parameters, with a shared site and path for all navigation items in a group. Append and regular-expression conditions are unsupported. Modified parameters move to the end of the query. Disabling this option retains the original Fetch / XHR scope.

JSON changes can replace field values, whole arrays or array elements, or rename object fields selected by a path while preserving their values. Renaming a root, array index or field to an existing sibling name leaves the category's original content intact.

Parameter and body modification installs Fetch / XHR wrappers only in configured, authorized page origins and checks permission for every enabled step's effective target API origin. query parameters can be set, removed or appended. Request bodies support text/JSON and form fields. Modified URLs, request headers and request bodies are actually sent to the destination server and may affect its processing. Files and unsupported binary/streaming bodies remain unchanged.

Matching text/JSON responses are read and transformed in page memory, never sent to the extension background or developer, stored in response history, or fetched again. Necessary parameter/body rules enter that page's JavaScript environment; do not put unrelated secrets in replacement values. On sites with enabled rules, wrappers install at the start of new documents. Initial asynchronous requests wait up to two seconds for checked rules; timeout or disabling releases the original request. Native method references captured before installation on already open pages require a reload. Synchronous XHR before configuration is ready, Workers, binary and streaming responses are not guaranteed. Response body changes affect values read by page scripts; the developer tools Network panel may still show the original server response. Content exceeding 2 MiB, failed parsing or missing JSON paths keeps the original content for that category. Each replacement value is limited to 256 KiB. JSONPath and regular expressions use bounded parsers without running user scripts. No debugger or new API permission is used.

Pause, disable and delete controls are available for groups, with individual switches for their steps. Revoking website access disables affected rules and clears page wrappers; granting access again does not reactivate them automatically. Revoking rule and encoding permission in Privacy and data first removes installed header/encoding rules, disables request/response modification and clears page wrappers, while keeping local configuration. Requests already sent and data already delivered to a page cannot be recalled.