Add section on data privacy/security
Resolved 💬 11 comments Opened Apr 20, 2025 by schollii Closed Jan 14, 2026
💡 Likely answer: A maintainer (etraut-openai, contributor)
responded on this thread — see the highlighted reply below.
What is the type of issue?
_No response_
What is the issue?
It would be much appreciated if you could add a section on data privacy. It is not clear to me how this tool works: I presume it has to send the local folder tree contents to openai? Looks like it does not use my chatGPT Plus subscription? Can local data be used to train your model? What if this folder has financial or business strategic data, need assurances I can safely use this tool, or at least what the boundaries are. A section that discusses this would be really useful.
Where did you find it?
_No response_
11 Comments
Bumping this. Would like to see a privacy statement on Codex.
As a TSP, my company is very cautious with new tools. It would be great to have a proper privacy policy regarding Codex CLI software. We are looking forward to a tool for agentic coding, and we found that information for Claude Code.
I guess a lot is dependent on the model provider, but what about telemetry or crash reporting?
@pietrini I agree. We need some verbiage stating intent for Codex so the tool can be used in any setting concerned with privacy.
This would be excellent. For example:
FWIW, I found these helpful at a high level:
It would still be useful to have clear, detailed information in line with (for instance) the questions raised by @mkaalto.
I did a bit of analysis (with codex) about this codebase at current latest main branch (commit cbd7d0d54330443887852b21636c816f60f1bde8).
Overall, the @tjcrowder links seem to apply in normal usage. If using custom endpoints, then there are still 1) update checks directly from Github API and 2) feedback, which sends the full conversation log (?) to OpenAI. But this must be explicitly requested and approved by user.
For maximum privacy:
check_for_update_on_startupto false in configBelow is the LLM output for data connections it found from codebase & relevant files:
LLM calls
<details>
Normal (openai) endpoint
Built-in providers (e.g., OpenAI) are used by default and connect to
https://api.openai.com/v1(or the configured base URL). Auth is viaAuthorization: Bearer ...and optionalChatGPT-Account-IDheaders.data:frames and handles timeouts.responsesorchat/completions) for OpenAI-style providers.Authorization: Bearer …and optionalChatGPT-Account-IDheaders.Login is user-initiated (not on by default) via
codex login. The local login server opens a browser to the issuer’s authorization URL and exchanges the returned code at the issuer’s/oauth/token. Optionally, a device-code flow polls issuer endpoints. Connects to the configuredissuer(defaults to OpenAI auth).issuer/oauth/token./api/accounts/deviceauth/usercode) at issuer./api/accounts/deviceauth/token) at issuer.Custom endpoint for LLM
Custom provider endpoints (e.g., Azure) are used when configured in
config.toml. Not on by default. Connections go to your specifiedbase_url(e.g.,https://<project>.openai.azure.com/openai/...) with optionalapi-versionquery params.responsesvschat/completionspath based on provider.storeto true for Azure Responses requests.storecompatibility.Accept: text/event-streamfor streaming.reqwestfor SSE consumption.</details>
Other data
<details>
Telemetry (opt-in?)
Telemetry is opt-in (disabled by default) via
[otel]inconfig.toml. It exports OpenTelemetry log events to the user-configured OTLP endpoint (HTTP/v1/logsor gRPC:4317), not to Azure/OpenAI.Feedback
Feedback upload to Sentry is manual (not on by default) when the user chooses to send logs. Connects to Sentry ingestion per the embedded DSN.
User flow: the TUI explicitly asks for consent (“Upload logs?” Yes/No) before opening the note composer, and only submits on user action. Upload is triggered on submit; accidental upload is prevented by the explicit consent and submit steps.
upload_feedbackon submit.Update checks
Update checks are enabled only in release builds and when
check_for_update_on_startupis true. They fetch from GitHub API and/or Homebrew cask to discover the latest version.Proxy
The local Responses API proxy listens on
127.0.0.1and forwards onlyPOST /v1/responsesto the configured upstream. Default upstream is OpenAI; can be pointed at Azure with explicit URL. Not used by default.responsesURL withapi-version.</details>
Example feedback content (rolout-file):
<details>
</details>
@mkaalto thanks for doing that legwork.
Is it worth opening an issue to request the feature we are implying we want? Having a configuration option where using locally hosted models with OpenAI API compatibility completely cut out data being sent elsewhere would likely lead to a lot more users (including myself).
I think you have a good idea for a feature @AndrewSpittlemeister .
For me, what's also important is to spell out what data the Codex source code is collecting, and how it's being used. For example, if I'm using Gemini for the backend model for Codex, I need to understand how both Google Gemini _and_ Codex are collecting & using my data. Bonus for both of us if the privacy policy is released and OpenAI commits to collecting no or minimal data from Codex. At the very least I would expect something to say that OpenAI won't harvest your source code or use it for training when using Codex.
Bump
This is quite an old thread at this point, and the above posts have covered many different topic areas.
In addition to the answers already posted above, you may find that some of your questions are answered in our documentation here and here.
For more detailed questions (e.g. about specific endpoint usage or other implementation details), I recommend cloning the OSS repo and asking Codex questions about its own code.
@etraut-openai
This is exactly what I think we were looking for, thank you for giving us some direct links.
Tagging some others of interest from this thread to push notifications.
@codeRattlesnake @pdemro @mkaalto @tjcrowder @pietrini