Public policy

Privacy Policy

How Joshu handles API capture data, browser permissions, local storage, and user-directed exports.

Effective September 20, 2026

1. Scope and effective date

This policy applies to Joshu — API Assistant version 0.2.0, a Chromium browser extension for developers and QA engineers. It applies to version 0.2.0 and later unless a newer policy replaces it.

Joshu inspects supported API activity only after the user starts a capture for a selected tab. This policy covers information processed by the extension. Websites being inspected and browser vendors have their own privacy practices.

2. Plain-language summary

Joshu is local-first. Capture starts only after an explicit user action and is limited to the selected tab and active session. Standard capture can require manually granted API-origin access. Automatic API discovery requires an additional per-session consent action. Captures and settings remain in extension-local browser storage. Joshu has no developer-operated backend, account system, analytics, advertising, telemetry, data sale, or automatic capture upload. Data leaves local storage only through an explicit user export or copy operation.

3. Information Joshu handles

Depending on browser capabilities, user settings, and activity in the selected tab, Joshu may locally process and store:

  • HTTP methods and sanitized request URLs and paths.
  • Page and API origins.
  • HTTP statuses, request timing and duration, network failure information, and observed request type.
  • Optional sanitized request and response headers when the user enables header capture.
  • Session timestamps, record counts, capture state, and settings.
  • During Automatic API discovery, bounded JSON request and response previews when Chrome exposes them.
  • API origins discovered from Fetch/XHR activity in the selected tab.

Raw JSON body data can be handled transiently in memory while Joshu sanitizes it. Raw body data is not intentionally persisted before sanitization.

Captured traffic may contain personal, confidential, authentication-related, or proprietary information before or despite best-effort redaction. Use synthetic data whenever practical.

4. Purpose and use

Joshu uses captured information only for its user-facing API inspection functions:

  • Recording supported API activity from a user-selected tab.
  • Identifying failed and slow calls.
  • Showing captured calls in the inspector.
  • Applying best-effort sanitization.
  • Displaying discovered API origins.
  • Preparing user-reviewed JSON, Markdown, response text, or sanitized cURL output.

Captured information is not used for advertising, user profiling, tracking users across websites, data brokerage or sale, creditworthiness or lending, or unrelated analytics or services.

5. Standard capture and Automatic API discovery

Standard capture

Standard capture records supported Fetch/XHR metadata and does not retain request or response bodies. Cross-origin API traffic may require the user to grant the API origin manually. Granted optional origins remain controlled through Chrome's extension settings.

Automatic API discovery

To use Automatic API discovery, the user must expand its disclosure, check the per-session consent box, and deliberately start automatic discovery for the selected tab. Joshu then temporarily attaches Chrome's debugger to that tab. Chrome displays a debugging notification or banner while attached.

Joshu uses Chrome DevTools Protocol Network events to discover supported cross-origin API calls. It does not attach automatically in the background, during ordinary Standard capture, or to unrelated tabs. Stopping capture detaches the debugger.

Closing the tab, navigating to another origin, browser or worker interruption, another debugger taking control, storage limits, or extension updates can interrupt the session and detach Joshu. Automatic discovery does not guarantee that every request or body will be available.

6. Browser permissions

Joshu version 0.2.0 uses these permissions for its API inspection and interface functions:

  • activeTab: Used to start a user-requested capture for the currently selected tab and scope the session to that tab.
  • webRequest: Used during Standard capture to observe supported request lifecycle metadata. Joshu does not block, redirect, or modify network traffic.
  • storage: Used to store bounded capture sessions and settings locally on the user's device.
  • sidePanel: Used to display the API inspector beside the selected page.
  • debugger: Required by the installed version because Chrome does not make this permission optional. Joshu uses it only after the user provides separate per-session consent and starts Automatic API discovery. It is used to discover cross-origin Fetch/XHR activity and retrieve eligible bounded JSON previews for the selected tab. Chrome displays a debugging banner while Joshu is attached.
  • Optional HTTP/HTTPS origin access: Used only when the user grants a specific API origin for Standard capture. The extension declares broad optional HTTP/HTTPS patterns so users can grant API hosts discovered at runtime. These optional patterns do not grant access to every website automatically at installation.

Joshu does not request webRequestBlocking, modify network requests, or require permanent host access for all websites. Browser permission messages can use broad wording because the debugger API is powerful, even though Joshu limits its behavior to explicit selected-tab capture sessions.

7. Local storage and retention

Captures and settings are stored in extension-local browser storage on the user's device. Joshu allows a maximum of 2,000 records per session, 10 stored sessions, and 50 MiB of aggregate local capture storage. Old stopped sessions can be removed first when the storage budget is exceeded. An active session stops with a visible reason when it cannot store additional records.

Data remains until the user deletes sessions, selects Delete all captures, uninstalls the extension, or the browser removes extension data. Delete all captures keeps user settings. Exported files and clipboard contents are outside Joshu's control after export or copy.

8. JSON body policy

Only JSON request and response previews are eligible for body retention during Automatic API discovery. The default maximum is 256 KiB per body, and users can configure a limit from 16 KiB to 1,024 KiB.

Unsupported MIME types, malformed JSON, encoded or browser-inaccessible responses, and oversized bodies are omitted. Retrieval failures are represented with a reason. Known sensitive JSON keys are masked before sanitized previews are persisted. Best-effort redaction cannot recognize every personal, sensitive, authentication-related, or proprietary value.

9. Exports and clipboard operations

Exports are created locally. JSON and Markdown exports, response-text copying, and sanitized cURL copying require user action. Joshu shows a review preview before download or copy and does not automatically upload exports.

Users control downloaded files and clipboard content after those actions. Clipboard managers and synchronized clipboards may have separate privacy behavior.

10. Data transmission, sharing, and sale

Joshu does not automatically transmit captures to its developer and has no developer-operated capture server. It does not sell captured information, share it for advertising, use it for profiling, or provide automatic telemetry or capture upload.

Data leaves extension-local storage only when the user deliberately exports or copies it. Any later sharing performed by the user is controlled by that user.

11. Security and redaction

Safeguards include explicit capture initiation, selected-tab scope, separate per-session automatic-discovery consent, Chrome's visible debugger banner, automatic debugger detachment, local-only storage, bounded records, sessions, bodies, and total storage, known-secret redaction, strict URL mode, review-before-export and review-before-copy flows, and no automatic upload path.

Sanitization is best effort. It cannot recognize every personal, sensitive, authentication-related, or proprietary value. Names, formats, custom authentication schemes, encoded content, identifiers, and business-specific secrets may not be detected. Joshu does not promise that every capture is safe to share. Review every capture and export before copying, downloading, or sharing it.

12. User controls and deletion

Users can stop an active capture, stop Automatic API discovery to detach the debugger, delete an individual session, select Delete all captures, revoke optional API-origin permissions through Chrome, and uninstall Joshu. See the public support instructions for deletion and troubleshooting guidance.

Deleting data from Joshu does not delete copies previously downloaded, copied, pasted, synchronized, backed up, or shared.

13. Children's privacy

Joshu is a developer and QA tool and is not directed to children under 13 or the minimum age required by local law. The developer does not knowingly collect children's personal information through Joshu; the extension does not automatically upload captures.

14. Policy changes

This policy may change when Joshu's features, permissions, legal obligations, or privacy practices change. Material updates will be reflected on this page with a revised effective date. This policy applies to version 0.2.0 and later unless it is replaced by a newer policy.

15. Contact and support

Privacy and support requests should follow the instructions on the public support page. Never include captures, credentials, tokens, cookies, personal information, private URLs, or proprietary information in support requests.

16. Chrome Web Store Limited Use disclosure

Joshu’s use of information received from Google APIs adheres to the Chrome Web Store User Data Policy, including the Limited Use requirements.

Information is used only to provide or improve Joshu's single-purpose API inspection functionality. It is not used or transferred for personalized advertising, creditworthiness or lending, or unrelated purposes, and it is not sold to data brokers. Captures are not automatically made available to the developer or other humans because there is no automatic upload path.