← All articles

Technical guide

Does ChatGPT Send Your Entire Prompt? Check the Network Tab

A hands-on explanation of what leaves your browser when you send a prompt, how to inspect the request, and what masking changes.

8 min read

When you press Send in an AI chat, the text must leave the browser for the provider to answer it. Hiding a value visually in the page is not enough. The useful test is the outgoing request: does its payload contain the raw value, or a safe replacement?

Use fake data for this test.Never paste a live credential just to see whether a privacy tool catches it. Use an unmistakably synthetic value such as sk-test-EXAMPLE-NOT-A-REAL-KEY and jane.qa@example.com.

What the Network tab proves

Browser extensions can change what you see in a text box, intercept a paste, warn before submission, or modify the data that is actually sent. Those behaviors look similar from the outside. Only the last one directly answers the question: “Did the raw secret leave my browser in this request?”

Chrome DevTools shows the browser's network activity. By capturing the request created when you send a prompt, you can inspect the payload that the website transmitted. Provider interfaces and request formats change, so the exact endpoint name may differ over time, but the method remains the same.

Run the test in Chrome

  1. Open a fresh ChatGPT conversation. Do not use real customer data, credentials, or private code.
  2. Open DevTools with F12 or Ctrl+Shift+I on Windows/Linux and Cmd+Option+I on macOS.
  3. Select the Network panel and filter to Fetch/XHR. Keep DevTools open before sending.
  4. Enter a test prompt containing a fake marker, for example:
    Review this config:
    OPENAI_API_KEY=sk-test-EXAMPLE-NOT-A-REAL-KEY
    CUSTOMER_EMAIL=jane.qa@example.com
  5. Press Send and watch for the new request in the Network list.
  6. Open likely conversation or message requests and inspect Payload, Request, or Request data. Search for your unique test marker.

How to interpret the result

Raw

OPENAI_API_KEY=
sk-test-EXAMPLE-NOT-A-REAL-KEY

The browser sent your marker to the provider. A visual blur, warning, or post-send replacement did not prevent that request.

Masked

OPENAI_API_KEY=
[api_key_openai_test]

The captured request contains a replacement rather than your raw marker. That is the behavior you want from send-time masking.

Do not rely only on the text visible in the chat after submission. A website can redraw the message after the request has already been sent. Likewise, a privacy extension can display a protected version while a different request path still contains the original. Inspecting the actual send request is the stronger test.

Why “it runs locally” is not the whole answer

Local processing is valuable because the privacy tool does not need to upload your prompt to its own server for classification. But “local” alone does not tell you when protection occurs. A local tool might sanitize text only when you click a separate button, only on paste, or only after a warning dialog.

The workflow matters:

  • Manual sanitizer: you clean the text, copy it, and then paste the clean version into the AI chat.
  • Paste interception: protection runs when clipboard text enters the composer.
  • Send-time masking: protection runs as the message is submitted, including supported typing and paste workflows.
  • Warning/block: the tool stops submission and asks you to remove or approve the finding.

None is automatically right for every user. A manual sanitizer offers explicit control. Paste interception is easy to understand. Send-time masking reduces the chance that someone bypasses protection by typing instead of pasting. Blocking is useful when sending must never proceed without review.

Testing OmniShield without trusting our copy

Install OmniShield, keep core protection enabled, and repeat the test with synthetic values. In a supported flow, the outgoing message should contain a placeholder instead of the matching key or PII. The extension popup should also reflect that an item was masked.

Then test the uncomfortable cases:

  • Type the value manually instead of pasting it.
  • Submit with Enter and with the site's Send button.
  • Put multiple data types in one prompt.
  • Try a normal paragraph that should not be modified.
  • Disable the extension and confirm the raw test marker reappears.

That final negative control matters. If the request looks identical with the extension disabled, you may be inspecting the wrong request or using a test string that does not match a detector.

Limits of this test

DevTools tells you what the browser sent in the request you inspected. It does not prove every possible submission route is covered, audit the extension's source code, or explain what the AI provider does with data after receiving it. Websites evolve, and extension protection must be tested again when those websites change.

It is still an unusually useful check because it turns an abstract privacy promise into something you can see. Instead of accepting “we redact your data,” you can ask a narrower, verifiable question: “Where is my test marker in the outgoing request?”

Manual protection is available too

If you do not want to install anything yet, use the free AI Prompt Sanitizer to clean a prompt in your browser, then copy the sanitized result into ChatGPT. If you already sent a live key, start with the API key incident checklist instead. Masking prevents the next leak; it cannot revoke a credential that was already exposed.