Codex CLIโ (เชจเชตเซ เชตเชฟเชจเซเชกเซเชฎเชพเช เชเซเชฒเซ เชเซ) is our cross-platform local software agent, designed to produce high-quality, reliable software changes while operating safely and efficiently on your machine. Weโve learned a tremendous amount about how to build a world-class software agent since we first launched the CLI in Aprilโ . To unpack those insights, this is the first post in an ongoing series where weโll explore various aspects of how Codex works, as well as hard-earned lessons. (For an even more granular view on how the Codex CLI is built, check out our open source repository at https://github.com/openai/codexโ (เชจเชตเซ เชตเชฟเชจเซเชกเซเชฎเชพเช เชเซเชฒเซ เชเซ). Many of the finer details of our design decisions are memorialized in GitHub issues and pull requests if youโd like to learn more.)
To kick off, weโll focus on the agent loop, which is the core logic in Codex CLI that is responsible for orchestrating the interaction between the user, the model, and the tools the model invokes to perform meaningful software work. We hope this post gives you a good view into the role our agent (or โharnessโ) plays in making use of an LLM.
Before we dive in, a quick note on terminology: at OpenAI, โCodexโ encompasses a suite of software agent offerings, including Codex CLI, Codex Cloud, and the Codex VS Code extension. This post focuses on the Codex harness, which provides the core agent loop and execution logic that underlies all Codex experiences and is surfaced through the Codex CLI. For ease here, weโll use the terms โCodexโ and โCodex CLIโ interchangeably.
At the heart of every AI agent is something called โthe agent loop.โ A simplified illustration of the agent loop looks like this:
To start, the agent takes input from the user to include in the set of textual instructions it prepares for the model known as a prompt.
The next step is to query the model by sending it our instructions and asking it to generate a response, a process known as inference. During inference, the textual prompt is first translated into a sequence of input tokensโ (เชจเชตเซ เชตเชฟเชจเซเชกเซเชฎเชพเช เชเซเชฒเซ เชเซ)โintegers that index into the modelโs vocabulary. These tokens are then used to sample the model, producing a new sequence of output tokens.
The output tokens are translated back into text, which becomes the modelโs response. Because tokens are produced incrementally, this translation can happen as the model runs, which is why many LLM-based applications display streaming output. In practice, inference is usually encapsulated behind an API that operates on text, abstracting away the details of tokenization.
As the result of the inference step, the model either (1) produces a final response to the userโs original input, or (2) requests a tool call that the agent is expected to perform (e.g., โrun ls and report the outputโ). In the case of (2), the agent executes the tool call and appends its output to the original prompt. This output is used to generate a new input thatโs used to re-query the model; the agent can then take this new information into account and try again.
This process repeats until the model stops emitting tool calls and instead produces a message for the user (referred to as an assistant message in OpenAI models). In many cases, this message directly answers the userโs original request, but it may also be a follow-up question for the user.
Because the agent can execute tool calls that modify the local environment, its โoutputโ is not limited to the assistant message. In many cases, the primary output of a software agent is the code it writes or edits on your machine. Nevertheless, each turn always ends with an assistant messageโsuch as โI added the architecture.md you asked forโโwhich signals a termination state in the agent loop. From the agentโs perspective, its work is complete and control returns to the user.
The journey from user input to agent response shown in the diagram is referred to as one turn of a conversation (a thread in Codex). Though this conversation turn can include many iterations between the model inference and tool calls. Every time you send a new message to an existing conversation, the conversation history is included as part of the prompt for the new turn, which includes the messages and tool calls from previous turns:
This means that as the conversation grows, so does the length of the prompt used to sample the model. This length matters because every model has a context window, which is the maximum number of tokens it can use for one inference call. Note this window includes both input and output tokens. As you might imagine, an agent could decide to make hundreds of tool calls in a single turn, potentially exhausting the context window. For this reason, context window management is one of the agentโs many responsibilities. Now, letโs dive in to see how Codex runs the agent loop.
The Codex CLI sends HTTP requests to the Responses APIโ (เชจเชตเซ เชตเชฟเชจเซเชกเซเชฎเชพเช เชเซเชฒเซ เชเซ) to run model inference. Weโll examine how information flows through Codex, which uses the Responses API to drive the agent loop.
The Responses API endpoint that the Codex CLI uses is configurableโ (เชจเชตเซ เชตเชฟเชจเซเชกเซเชฎเชพเช เชเซเชฒเซ เชเซ), so it can be used with any endpoint that implements the Responses APIโ (เชจเชตเซ เชตเชฟเชจเซเชกเซเชฎเชพเช เชเซเชฒเซ เชเซ):
When using ChatGPT loginโ (เชจเชตเซ เชตเชฟเชจเซเชกเซเชฎเชพเช เชเซเชฒเซ เชเซ) with the Codex CLI, it uses
https://chatgpt.com/backend-api/codex/responsesas the endpointWhen using API-key authenticationโ (เชจเชตเซ เชตเชฟเชจเซเชกเซเชฎเชพเช เชเซเชฒเซ เชเซ) with OpenAI hosted models, it uses
https://api.openai.com/v1/responsesas the endpointWhen running Codex CLI with
--ossto use gpt-ossโ with ollama 0.13.4+โ (เชจเชตเซ เชตเชฟเชจเซเชกเซเชฎเชพเช เชเซเชฒเซ เชเซ) or LM Studio 0.3.39+โ (เชจเชตเซ เชตเชฟเชจเซเชกเซเชฎเชพเช เชเซเชฒเซ เชเซ), it defaults tohttp://localhost:11434/v1/responsesrunning locally on your computerCodex CLI can be used with the Responses API hosted by a cloud provider such as Azure
Letโs explore how Codex creates the prompt for the first inference call in a conversation.
As an end user, you donโt specify the prompt used to sample the model verbatim when you query the Responses API. Instead, you specify various input types as part of your query, and the Responses API server decides how to structure this information into a prompt that the model is designed to consume. You can think of the prompt as a โlist of itemsโ; this section will explain how your query gets transformed into that list.
In the initial prompt, every item in the list is associated with a role. The role indicates how much weight the associated content should have and is one of the following values (in decreasing order of priority): system, developer, user, assistant.
The Responses APIโ (เชจเชตเซ เชตเชฟเชจเซเชกเซเชฎเชพเช เชเซเชฒเซ เชเซ) takes a JSON payload with many parameters. Weโll focus on these three:
instructionsโ (เชจเชตเซ เชตเชฟเชจเซเชกเซเชฎเชพเช เชเซเชฒเซ เชเซ): system (or developer) message inserted into the modelโs contexttoolsโ (เชจเชตเซ เชตเชฟเชจเซเชกเซเชฎเชพเช เชเซเชฒเซ เชเซ): a list of tools the model may call while generating a responseinputโ (เชจเชตเซ เชตเชฟเชจเซเชกเซเชฎเชพเช เชเซเชฒเซ เชเซ): a list of text, image, or file inputs to the model
In Codex, the instructions field is read from the model_instructions_fileโ (เชจเชตเซ เชตเชฟเชจเซเชกเซเชฎเชพเช เชเซเชฒเซ เชเซ) in ~/.codex/config.toml, if specified; otherwise, the base_instructions associated with a modelโ (เชจเชตเซ เชตเชฟเชจเซเชกเซเชฎเชพเช เชเซเชฒเซ เชเซ) are used. Model-specific instructions live in the Codex repo and are bundled into the CLI (e.g., gpt-5.2-codex_prompt.mdโ (เชจเชตเซ เชตเชฟเชจเซเชกเซเชฎเชพเช เชเซเชฒเซ เชเซ)).
The tools field is a list of tool definitions that conform to a schema defined by the Responses API. For Codex, this includes tools that are provided by the Codex CLI, tools that are provided by the Responses API that should be made available to Codex, as well as tools provided by the user, usually via MCP servers:
Finally, the input field of the JSON payload is a list of items. Codex inserts the following itemsโ (เชจเชตเซ เชตเชฟเชจเซเชกเซเชฎเชพเช เชเซเชฒเซ เชเซ) into the input before adding the user message:
1. A message with role=developer that describes the sandbox that applies only to the Codex-provided shell tool defined in the tools section. That is, other tools, such as those provided from MCP servers, are not sandboxed by Codex and are responsible for enforcing their own guardrails.
The message is built from a template where the key pieces of content come from snippets of Markdown bundled into the Codex CLI, such as workspace_write.mdโ (เชจเชตเซ เชตเชฟเชจเซเชกเซเชฎเชพเช เชเซเชฒเซ เชเซ) and on_request.mdโ (เชจเชตเซ เชตเชฟเชจเซเชกเซเชฎเชพเช เชเซเชฒเซ เชเซ):
2. (Optional) A message with role=developer whose contents are the developer_instructions value read from the userโs config.toml file.
3. (Optional) A message with role=user whose contents are the โuser instructions,โ which are not sourced from a single file but are aggregated across multiple sourcesโ (เชจเชตเซ เชตเชฟเชจเซเชกเซเชฎเชพเช เชเซเชฒเซ เชเซ). In general, more specific instructions appear later:
Contents of
AGENTS.override.mdandAGENTS.mdin$CODEX_HOMESubject to a limit (32 KiB, by default), look in each folder from the Git/project root of the
cwd(if it it exists) up to thecwditself: add the contents of any ofAGENTS.override.md,AGENTS.md, or any filename specified byproject_doc_fallback_filenames in config.tomlIf any skillsโ (เชจเชตเซ เชตเชฟเชจเซเชกเซเชฎเชพเช เชเซเชฒเซ เชเซ) have been configured:
a short preamble about skills
the skill metadataโ (เชจเชตเซ เชตเชฟเชจเซเชกเซเชฎเชพเช เชเซเชฒเซ เชเซ) for each skill
a section on how to use skillsโ (เชจเชตเซ เชตเชฟเชจเซเชกเซเชฎเชพเช เชเซเชฒเซ เชเซ)
4. A message with role=user that describes the local environment in which the agent is currently operating. This specifies the current working directory and the userโs shellโ (เชจเชตเซ เชตเชฟเชจเซเชกเซเชฎเชพเช เชเซเชฒเซ เชเซ):
เชเชเชตเชพเชฐ Codex input เชจเซ initialize เชเชฐเชตเชพ เชฎเชพเชเซ เชเชชเชฐเซเชเซเชค เชคเชฎเชพเชฎ เชเชฃเชคเชฐเซ เชเชฐเซ เชฒเซ เชเซ, เชชเชเซ เชคเซ เชธเชเชตเชพเชฆ เชถเชฐเซ เชเชฐเชตเชพ เชฎเชพเชเซ user message เชเชฎเซเชฐเซ เชเซ.
เช
เชเชพเชเชจเชพ เชเชฆเชพเชนเชฐเชฃเซ เชฆเชฐเซเช message เชจเซ เชธเชพเชฎเชเซเชฐเซ เชชเชฐ เชเซเชจเซเชฆเซเชฐเชฟเชค เชนเชคเชพ, เชชเชฐเชเชคเซ เชงเซเชฏเชพเชจ เชฐเชพเชเซ เชเซ input เชจเซเช เชฆเชฐเซเช element type, roleโ (เชจเชตเซ เชตเชฟเชจเซเชกเซเชฎเชพเช เชเซเชฒเซ เชเซ), เช
เชจเซ content เชงเชฐเชพเชตเชคเซเช JSON object เชเซ, เชเซเชฎ เชเซ เชจเซเชเซ เชเซ:
เชเชเชตเชพเชฐ Codex Responses API เชจเซ เชฎเซเชเชฒเชตเชพ เชฎเชพเชเซ เชธเชเชชเซเชฐเซเชฃ JSON payload เชคเซเชฏเชพเชฐ เชเชฐเซ เชเซ, เชชเชเซ เชคเซ ~/.codex/config.toml เชฎเชพเช Responses API เชเชจเซเชกเชชเซเชเชจเซเช เชเซเชตเซ เชฐเซเชคเซ เชเชจเซเชซเชฟเชเชฐ เชเซ เชคเซเชจเชพ เชเชงเชพเชฐเซ Authorization header เชธเชพเชฅเซ HTTP POST request เชเชฐเซ เชเซ (เชเซ เชจเชฟเชฐเซเชงเชพเชฐเชฟเชค เชนเซเชฏ เชคเซ เชตเชงเชพเชฐเชพเชจเชพ HTTP headers เช
เชจเซ query parameters เชชเชฃ เชเชฎเซเชฐเชพเชฏ เชเซ).
เชเซเชฏเชพเชฐเซ OpenAI Responses API เชธเชฐเซเชตเชฐ request เชฎเซเชณเชตเซ เชเซ, เชคเซเชฏเชพเชฐเซ เชคเซ เชฎเซเชกเชฒ เชฎเชพเชเซ เชชเซเชฐเซเชฎเซเชชเซเช เชเชพเชขเชตเชพ JSON เชจเซ เช เชฎเซเชเชฌ เชเชชเชฏเซเช เชเชฐเซ เชเซ (เชเชพเชคเชฐเซ เชฎเชพเชเซ เชเชนเซเช เชคเซ, Responses API เชจเซ custom implementation เช เชฒเช เชชเชธเชเชฆเชเซ เชชเชฃ เชเชฐเซ เชถเชเซ):
เชเซเชฎ เชคเชฎเซ เชเซเช เชถเชเซ เชเซ, เชชเซเชฐเซเชฎเซเชชเซเชเชจเซ เชชเซเชฐเชฅเชฎ เชคเซเชฐเชฃ items เชจเซ เชเซเชฐเชฎ client เชจเชนเซเช เชชเชฐเชเชคเซ server เชจเชเซเชเซ เชเชฐเซ เชเซ. เชคเซเชฎ เชเชคเชพเช, เช เชคเซเชฐเชฃ items เชฎเชพเชเชฅเซ เชซเชเซเชค system message เชจเซ เชธเชพเชฎเชเซเชฐเซ เชชเชฃ server เชฆเซเชตเชพเชฐเชพ เชจเชฟเชฏเชเชคเซเชฐเชฟเชค เชฅเชพเชฏ เชเซ, เชเชพเชฐเชฃ เชเซ tools เช
เชจเซ instructions client เชจเชเซเชเซ เชเชฐเซ เชเซ. JSON payload เชฎเชพเชเชฅเซ เชเชตเซเชฒ input เชชเชเซ เชเชตเซ เชเซ เช
เชจเซ เชชเซเชฐเซเชฎเซเชชเซเช เชชเซเชฐเซเชฃ เชเชฐเซ เชเซ.
เชนเชตเซ เชเซเชฏเชพเชฐเซ เช เชฎเชพเชฐเซ เชชเซเชฐเซเชฎเซเชชเซเช เชคเซเชฏเชพเชฐ เชเซ, เชคเซเชฏเชพเชฐเซ เช เชฎเซ เชฎเซเชกเชฒเชฎเชพเชเชฅเซ เชจเชฎเซเชจเชพ เชฒเซเชตเชพ เชคเซเชฏเชพเชฐ เชเซเช.
Responses API เชจเซ เชเชฐเชพเชฏเซเชฒ เช HTTP request Codex เชฎเชพเช เชธเชเชตเชพเชฆเชจเซ เชชเซเชฐเชฅเชฎ โturnโ เชถเชฐเซ เชเชฐเซ เชเซ. เชธเชฐเซเชตเชฐ Server-Sent Events (SSEโ (เชจเชตเซ เชตเชฟเชจเซเชกเซเชฎเชพเช เชเซเชฒเซ เชเซ)) stream เชธเชพเชฅเซ เชเชตเชพเชฌ เชเชชเซ เชเซ. เชฆเชฐเซเช event เชจเซ data "type" เชงเชฐเชพเชตเชคเซเช JSON payload เชเซ, เชเซ "response" เชฅเซ เชถเชฐเซ เชฅเชพเชฏ เชเซ, เช
เชจเซ เชคเซ เช เชเซเชตเซเช เชนเซเช เชถเชเซ เชเซ (events เชจเซ เชธเชเชชเซเชฐเซเชฃ เชฏเชพเชฆเซ เช
เชฎเชพเชฐเซ API docsโ (เชจเชตเซ เชตเชฟเชจเซเชกเซเชฎเชพเช เชเซเชฒเซ เชเซ) เชฎเชพเช เชฎเชณเซ เชถเชเซ เชเซ):
Codex events เชจเซ stream เชจเซ เชเชชเชฏเซเช เชเชฐเซ เชเซโ (เชจเชตเซ เชตเชฟเชจเซเชกเซเชฎเชพเช เชเซเชฒเซ เชเซ) เช
เชจเซ เชคเซเชฎเชจเซ เชเชตเชพ เชเชเชคเชฐเชฟเช event objects เชคเชฐเซเชเซ เชซเชฐเซ เชชเซเชฐเชเชพเชถเชฟเชค เชเชฐเซ เชเซ เชเซเชจเซ client เชเชชเชฏเซเช เชเชฐเซ เชถเชเซ. response.output_text.delta เชเซเชตเซ events UI เชฎเชพเช streaming เชฎเชพเชเซ เชตเชชเชฐเชพเชฏ เชเซ, เชเซเชฏเชพเชฐเซ response.output_item.added เชเซเชตเซ เช
เชจเซเชฏ events เชเชตเชพ objects เชฎเชพเช เชฐเซเชชเชพเชเชคเชฐเชฟเชค เชฅเชพเชฏ เชเซ เชเซ เช
เชจเซเชเชพเชฎเซ Responses API calls เชฎเชพเชเซ input เชฎเชพเช เชเชฎเซเชฐเชพเชฏ เชเซ.
เชฎเชพเชจเซ เชฒเซ เชเซ Responses API เชจเซ เชเชฐเซเชฒเซ เชชเซเชฐเชฅเชฎ request เชฎเชพเช เชฌเซ response.output_item.done events เชนเซเชฏ: เชเช type=reasoning เชธเชพเชฅเซ เช
เชจเซ เชฌเซเชเซ type=function_call เชธเชพเชฅเซ. เชเซเชฏเชพเชฐเซ เช
เชฎเซ tool call เชจเชพ response เชธเชพเชฅเซ เชซเชฐเซ เชฎเซเชกเชฒเชจเซ query เชเชฐเซเช, เชคเซเชฏเชพเชฐเซ เช events JSON เชจเชพ input field เชฎเชพเช เช เชฐเซเชคเซ เชฐเชเซ เชฅเชตเซ เชเชฐเซเชฐเซ เชเซ:
เช เช เชจเซเชเชพเชฎเซ query เชจเชพ เชญเชพเชเชฐเซเชชเซ เชฎเซเชกเชฒเชฎเชพเชเชฅเซ เชจเชฎเซเชจเชพ เชฒเซเชตเชพ เชฎเชพเชเซ เชตเชชเชฐเชพเชคเซ เชชเชฐเชฟเชฃเชพเชฎเชฐเซเชช เชชเซเชฐเซเชฎเซเชชเซเช เช เชฐเซเชคเซ เชฆเซเชเชพเชถเซ:
เชเชพเชธ เชเชฐเซเชจเซ เชงเซเชฏเชพเชจ เชเชชเซ เชเซ เชเซเชจเซ เชชเซเชฐเซเชฎเซเชชเซเช เชจเชตเชพ เชชเซเชฐเซเชฎเซเชชเซเชเชจเซ เชเซเชเซเชเชธ prefix เชเซ. เช เชเชฐเชพเชฆเชพเชชเซเชฐเซเชตเช เชเซ, เชเชพเชฐเชฃ เชเซ เชคเซ เช เชจเซเชเชพเชฎเซ requests เชจเซ เชฌเชนเซ เชตเชงเซ เชเชพเชฐเซเชฏเชเซเชทเชฎ เชฌเชจเชพเชตเซ เชเซ เชเซเชฎ เชเซ เช เชฎเซ prompt caching เชจเซ เชฒเชพเชญ เชฒเช เชถเชเซเช เชเซเช (เชเซ เช เชเชเซ เช เชฎเซ เชชเซเชฐเชฆเชฐเซเชถเชจเชจเชพ เชเชเชณเชจเชพ เชตเชฟเชญเชพเชเชฎเชพเช เชเชฐเซเชเชพ เชเชฐเซเชถเซเช).
เชเชเชจเซเช เชฒเซเชชเชจเชพ เชชเซเชฐเชฅเชฎ เชเชฟเชคเซเชฐ เชคเชฐเชซ เชซเชฐเซ เชเซเชถเซเช เชคเซ inference เช เชจเซ tool calling เชตเชเซเชเซ เชเชฃเซ เชชเซเชจเชฐเชพเชตเชฐเซเชคเชจเซ เชนเซเช เชถเชเซ เชเซ. เชชเซเชฐเซเชฎเซเชชเซเช เชเชฆเชพเช เชตเชงเชคเซ เชฐเชนเซ เชคเซเชฏเชพเช เชธเซเชงเซ เชเซ เช เชฎเชจเซ assistant message เชจ เชฎเชณเซ, เชเซ turn เชจเชพ เช เชเชคเชจเซเช เชธเชเชเซเชค เชเชชเซ เชเซ:
Codex CLI เชฎเชพเช, เช
เชฎเซ assistant message เชตเชชเชฐเชพเชถเชเชฐเซเชคเชพเชจเซ เชฌเชคเชพเชตเซเช เชเซเช เช
เชจเซ composer เชชเชฐ focus เชเชฐเซเชจเซ เชตเชชเชฐเชพเชถเชเชฐเซเชคเชพเชจเซ เชธเซเชเชตเซเช เชเซเช เชเซ เชนเชตเซ เชธเชเชตเชพเชฆ เชเชเชณ เชตเชงเชพเชฐเชตเชพเชจเซ เชคเซเชฎเชจเซ โturnโ เชเซ. เชเซ เชตเชชเชฐเชพเชถเชเชฐเซเชคเชพ เชเชตเชพเชฌ เชเชชเซ, เชคเซ เช
เชเชพเชเชจเชพ turn เชจเซ assistant message เช
เชจเซ เชตเชชเชฐเชพเชถเชเชฐเซเชคเชพเชจเซ เชจเชตเซ message เชฌเชเชจเซ เชจเชตเชพ turn เชจเซ เชถเชฐเซเชเชค เชฎเชพเชเซ Responses API request เชจเชพ input เชฎเชพเช เชเชฎเซเชฐเชตเชพ เชชเชกเซ เชเซ:
เชซเชฐเซ เชเชเชตเชพเชฐ, เชเชพเชฐเชฃ เชเซ เช
เชฎเซ เชธเชเชตเชพเชฆ เชเชพเชฒเซ เชฐเชพเชเซ เชฐเชนเซเชฏเชพ เชเซเช, Responses API เชจเซ เชฎเซเชเชฒเชพเชคเซ input เชจเซ เชฒเชเชฌเชพเช เชตเชงเชคเซ เช เชเชพเชฏ เชเซ:
เช เชธเชคเชค เชตเชงเชคเชพ เชชเซเชฐเซเชฎเซเชชเซเชเชจเซ เชชเซเชฐเชฆเชฐเซเชถเชจ เชชเชฐ เชถเซเช เช เชฐเซเชฅ เชฅเชพเชฏ เชเซ เชคเซ เชเซเชเช.
เชคเชฎเซ เชเชฆเชพเช เชชเซเชคเชพเชจเซ เชชเซเชเชคเชพ เชนเชถเซ, โเชฅเซเชญเซ, เชถเซเช เชธเชเชตเชพเชฆ เชฆเชฐเชฎเซเชฏเชพเชจ Responses API เชจเซ เชฎเซเชเชฒเชพเชคเชพ JSON เชจเชพ เชชเชฐเชฟเชฎเชพเชฃเชจเซ เชฆเซเชทเซเชเชฟเช เชเชเชจเซเช เชฒเซเชช quadratic เชจเชฅเซ?โ เช
เชจเซ เชคเชฎเซ เชธเชพเชเชพ เชนเชถเซ. เชเซเชฏเชพเชฐเซ Responses API เช เชธเชฎเชธเซเชฏเชพเชจเซ เชเชเชพเชกเชตเชพ เชฎเชพเชเซ เชตเซเชเชฒเซเชชเชฟเช previous_response_idโ (เชจเชตเซ เชตเชฟเชจเซเชกเซเชฎเชพเช เชเซเชฒเซ เชเซ) parameter เชจเซ เชธเชชเซเชฐเซเช เชเชฐเซ เชเซ, Codex เชเชเซ เชฎเซเชเซเชฏเชคเซเชตเซ requests เชจเซ เชธเชเชชเซเชฐเซเชฃเชชเชฃเซ stateless เชฐเชพเชเชตเชพ เช
เชจเซ Zero Data Retention (ZDR) configurations เชจเซ เชธเชชเซเชฐเซเช เชเชฐเชตเชพ เชฎเชพเชเซ เชคเซเชจเซ เชเชชเชฏเซเช เชเชฐเชคเซเช เชจเชฅเซ.
previous_response_id เชเชพเชณเชตเชพเชฅเซ Responses API เชจเชพ provider เชฎเชพเชเซ เชฌเชพเชฌเชคเซ เชธเชฐเชณ เชฌเชจเซ เชเซ เชเชพเชฐเชฃ เชเซ เชคเซ เชเชพเชคเชฐเซ เชเชฐเซ เชเซ เชเซ เชฆเชฐเซเช request stateless เชเซ. เชเชฅเซ Zero Data Retention (ZDR)โ (เชจเชตเซ เชตเชฟเชจเซเชกเซเชฎเชพเช เชเซเชฒเซ เชเซ) เชชเชธเชเชฆ เชเชฐเชจเชพเชฐเชพ customers เชจเซ เชธเชชเซเชฐเซเช เชเชฐเชตเซเช เชชเชฃ เชธเชฐเชณ เชฌเชจเซ เชเซ, เชเชพเชฐเชฃ เชเซ previous_response_id เชจเซ เชธเชชเซเชฐเซเช เชเชฐเชตเชพ เชเชฐเซเชฐเซ data เชธเชเชเซเชฐเชนเชฟเชค เชเชฐเชตเซเช ZDR เชธเชพเชฅเซ เชตเชฟเชฐเซเชฆเซเชง เชเชถเซ. เชงเซเชฏเชพเชจ เชฐเชพเชเซ เชเซ ZDR customers เช
เชเชพเชเชจเชพ turns เชจเชพ proprietary reasoning messages เชจเซ เชฒเชพเชญ เชเซเชฎเชพเชตเชคเชพ เชจเชฅเซ, เชเชพเชฐเชฃ เชเซ เชธเชเชฌเชเชงเชฟเชค encrypted_content เชธเชฐเซเชตเชฐ เชชเชฐ decrypt เชเชฐเซ เชถเชเชพเชฏ เชเซ. (OpenAI ZDR customer เชจเซ decryption key เชเชพเชณเชตเซ เชเซ, เชคเซเชฎเชจเซ data เชจเชนเซเช.) ZDR เชจเซ เชธเชชเซเชฐเซเช เชเชฐเชตเชพ Codex เชฎเชพเช เชเชฐเชพเชฏเซเชฒเชพ เชธเชเชฌเชเชงเชฟเชค เชซเซเชฐเชซเชพเชฐเซ เชฎเชพเชเซ PRs #642โ (เชจเชตเซ เชตเชฟเชจเซเชกเซเชฎเชพเช เชเซเชฒเซ เชเซ) เช
เชจเซ #1641โ (เชจเชตเซ เชตเชฟเชจเซเชกเซเชฎเชพเช เชเซเชฒเซ เชเซ) เชเซเช.
เชธเชพเชฎเชพเชจเซเชฏ เชฐเซเชคเซ, เชฎเซเชกเชฒเชฎเชพเชเชฅเซ เชจเชฎเซเชจเชพ เชฒเซเชตเชพเชจเซ เชเชฐเซเช network traffic เชจเชพ เชเชฐเซเช เชเชฐเชคเชพเช เชฎเซเชเซ เชนเซเชฏ เชเซ, เชเชเชฒเซ เชเชพเชฐเซเชฏเชเซเชทเชฎเชคเชพเชจเชพ เชชเซเชฐเชฏเชคเซเชจเซ เชฎเชพเชเซ sampling เชฎเซเชเซเชฏ เชฒเชเซเชทเซเชฏ เชฌเชจเซ เชเซ. เช เชเชพเชฐเชฃเซ prompt caching เชเซเชฌ เชฎเชนเชคเซเชตเชชเซเชฐเซเชฃ เชเซ, เชเซเชฎ เชเซ เชคเซ เช เชเชพเชเชจเซ inference call เชจเซ computation เชจเซ เชซเชฐเซ เชตเชพเชชเชฐเชตเชพเชจเซ เชฎเชเชเซเชฐเซ เชเชชเซ เชเซ. เชเซเชฏเชพเชฐเซ เช เชฎเชจเซ cache hits เชฎเชณเซ เชเซ, เชคเซเชฏเชพเชฐเซ เชฎเซเชกเชฒ sampling quadratic เชจเชพ เชฌเชฆเชฒเซ linear เชฌเชจเซ เชเซ. เช เชฎเชพเชฐเซ prompt caching โ (เชจเชตเซ เชตเชฟเชจเซเชกเซเชฎเชพเช เชเซเชฒเซ เชเซ) documentation เช เชฌเชพเชฌเชค เชตเชงเซ เชตเชฟเชเชคเซ เชธเชฎเชเชพเชตเซ เชเซ:
Cache hits เชซเชเซเชค prompt เชฎเชพเช เชเซเชเซเชเชธ prefix matches เชฎเชพเชเซ เช เชถเชเซเชฏ เชเซ. caching เชจเซ เชฒเชพเชญ เชฎเซเชณเชตเชตเชพ เชฎเชพเชเซ, instructions เช เชจเซ examples เชเซเชตเซ static content เชคเชฎเชพเชฐเชพ prompt เชจเซ เชถเชฐเซเชเชคเชฎเชพเช เชฎเซเชเซ, เช เชจเซ user-specific information เชเซเชตเซ variable content เช เชเชคเชฎเชพเช เชฎเซเชเซ. เช images เช เชจเซ tools เชฎเชพเชเซ เชชเชฃ เชฒเชพเชเซ เชชเชกเซ เชเซ, เชเซ requests เชตเชเซเชเซ เชธเชฎเชพเชจ เชนเซเชตเชพ เชเซเชเช.
เช เชงเซเชฏเชพเชจเชฎเชพเช เชฐเชพเชเซเชจเซ, เชเชพเชฒเซ เชตเชฟเชเชพเชฐเซเช เชเซ Codex เชฎเชพเช โcache missโ เชเชฏเชพ เชชเซเชฐเชเชพเชฐเชจเซ operations เชเชพเชฐเชฃเซ เชฅเช เชถเชเซ:
เชธเชเชตเชพเชฆเชจเชพ เชฎเชงเซเชฏเชฎเชพเช เชฎเซเชกเชฒ เชฎเชพเชเซ เชเชชเชฒเชฌเซเชง
toolsเชฌเชฆเชฒเซ เชฆเซเชตเซ.Responses API request เชจเซเช เชฒเชเซเชทเซเชฏ เชฌเชจเชคเซเช
modelเชฌเชฆเชฒเซ เชฆเซเชตเซเช (เชตเซเชฏเชตเชนเชพเชฐเชฎเชพเช, เช เชฎเซเชณ เชชเซเชฐเซเชฎเซเชชเซเชเชจเซ เชคเซเชฐเซเชเซ item เชฌเชฆเชฒเซ เชเซ, เชเชพเชฐเชฃ เชเซ เชคเซเชฎเชพเช เชฎเซเชกเชฒ-เชตเชฟเชถเชฟเชทเซเช instructions เชนเซเชฏ เชเซ).sandbox configuration, approval mode เช เชฅเชตเชพ current working directory เชฌเชฆเชฒเซ เชฆเซเชตเซ.
Codex เชเซเชฎเซ Codex CLI เชฎเชพเช เชเชตเซ เชจเชตเซ เชธเซเชตเชฟเชงเชพเช เชเชฎเซเชฐเชคเซ เชตเชเชคเซ เชเชพเชธ เชธเชพเชตเชเซเชค เชฐเชนเซเชตเซเช เชชเชกเซ เชเซ เชเซ prompt caching เชจเซ เชจเซเชเชธเชพเชจ เชชเชนเซเชเชเชพเชกเซ เชถเชเซ. เชเชฆเชพเชนเชฐเชฃ เชคเชฐเซเชเซ, MCP tools เชฎเชพเชเซเชจเชพ เช
เชฎเชพเชฐเชพ เชชเซเชฐเชพเชฐเชเชญเชฟเช support เช เชเชตเซ bug เชฒเชพเชตเซเชฏเซ เชเซ เช
เชฎเซ tools เชจเซ เชธเชคเชค เชเชเชธเชฐเชเชพ เชเซเชฐเชฎเชฎเชพเช enumerate เชจ เชเชฐเซ เชถเชเซเชฏเชพเชโ (เชจเชตเซ เชตเชฟเชจเซเชกเซเชฎเชพเช เชเซเชฒเซ เชเซ), เชเซเชจเชพ เชเชพเชฐเชฃเซ cache misses เชฅเชฏเชพ. เชงเซเชฏเชพเชจ เชฐเชพเชเซ เชเซ MCP tools เชเชพเชธ เชฎเซเชถเซเชเซเชฒ เชนเซเช เชถเชเซ เชเซ เชเชพเชฐเชฃ เชเซ MCP servers เชคเซเชฎเชจเซ เชชเชพเชธเซ เชเชชเชฒเชฌเซเชง tools เชจเซ เชฏเชพเชฆเซ notifications/tools/list_changedโ (เชจเชตเซ เชตเชฟเชจเซเชกเซเชฎเชพเช เชเซเชฒเซ เชเซ) notification เชฆเซเชตเชพเชฐเชพ เชเชคเชฟเชถเซเชฒ เชฐเซเชคเซ เชฌเชฆเชฒเซ เชถเชเซ เชเซ. เชฒเชพเชเชฌเชพ เชธเชเชตเชพเชฆเชจเชพ เชฎเชงเซเชฏเชฎเชพเช เช notification เชธเซเชตเซเชเชพเชฐเชตเชพเชฅเซ เชเชฐเซเชเชพเชณ cache miss เชฅเช เชถเชเซ เชเซ.
เชเซเชฏเชพเช เชถเชเซเชฏ เชนเซเชฏ เชคเซเชฏเชพเช, เชธเชเชตเชพเชฆเชจเชพ เชฎเชงเซเชฏเชฎเชพเช เชฅเชคเชพ configuration changes เชจเซ เช
เชฎเซ เช
เชเชพเชเชจเชพ message เชจเซ เชฌเชฆเชฒเซเชจเซ เชจเชนเซเช เชชเชฐเชเชคเซ input เชฎเชพเช เชจเชตเซ message เชเชฎเซเชฐเซเชจเซ เชธเชเชญเชพเชณเซเช เชเซเช:
เชเซ sandbox configuration เช เชฅเชตเชพ approval mode เชฌเชฆเชฒเชพเชฏ, เชคเซ เช เชฎเซ เชฎเซเชณ
<permissions instructions>item เชเซเชตเชพ เช เชซเซเชฐเซเชฎเซเช เชธเชพเชฅเซ เชจเชตเซrole=developermessage เชเชฎเซเชฐเซเช เชเซเชโ (เชจเชตเซ เชตเชฟเชจเซเชกเซเชฎเชพเช เชเซเชฒเซ เชเซ).เชเซ current working directory เชฌเชฆเชฒเชพเชฏ, เชคเซ เช เชฎเซ เชฎเซเชณ
<environment_context>เชเซเชตเชพ เช เชซเซเชฐเซเชฎเซเช เชธเชพเชฅเซ เชจเชตเซrole=usermessage เชเชฎเซเชฐเซเช เชเซเชโ (เชจเชตเซ เชตเชฟเชจเซเชกเซเชฎเชพเช เชเซเชฒเซ เชเซ).
เชชเซเชฐเชฆเชฐเซเชถเชจ เชฎเชพเชเซ cache hits เชธเซเชจเชฟเชถเซเชเชฟเชค เชเชฐเชตเชพ เช เชฎเซ เชเชฃเซ เชชเซเชฐเชฏเชคเซเชจ เชเชฐเซเช เชเซเช. เชเช เช เชจเซเชฏ เชฎเชนเชคเซเชตเชชเซเชฐเซเชฃ resource เชชเชฃ เชเซ เชเซเชจเซ เช เชฎเชพเชฐเซ เชธเชเชญเชพเชณเชตเซเช เชชเชกเซ เชเซ: context window.
context window เชเซเชเซ เชจ เชเชพเชฏ เชคเซ เชฎเชพเชเซเชจเซ เช
เชฎเชพเชฐเซ เชธเชพเชฎเชพเชจเซเชฏ เชฐเชฃเชจเซเชคเชฟ เช เชเซ เชเซ เชเซเชฏเชพเชฐเซ tokens เชจเซ เชธเชเชเซเชฏเชพ เชเซเชเซเชเชธ threshold เชฅเซ เชตเชงเซ เชเชพเชฏ เชคเซเชฏเชพเชฐเซ เชธเชเชตเชพเชฆเชจเซ compact เชเชฐเซ เชฆเซเชตเซ. เชเชพเชธ เชเชฐเซเชจเซ, เช
เชฎเซ input เชจเซ items เชจเซ เชจเชตเซ, เชจเชพเชจเซ เชธเซเชเชฟเชฅเซ เชฌเชฆเชฒเซ เชฆเชเช เชเซเช เชเซ เชธเชเชตเชพเชฆเชจเซเช เชชเซเชฐเชคเชฟเชจเชฟเชงเชฟเชคเซเชต เชเชฐเซ เชเซ, เชเซเชฅเซ เชเชเชจเซเช เช
เชคเซเชฏเชพเชฐ เชธเซเชงเซ เชถเซเช เชฅเชฏเซเช เชเซ เชคเซเชจเซ เชธเชฎเช เชธเชพเชฅเซ เชเชเชณ เชตเชงเซ เชถเชเซ. compaction เชจเซ เชชเซเชฐเชพเชฐเชเชญเชฟเช implementationโ (เชจเชตเซ เชตเชฟเชจเซเชกเซเชฎเชพเช เชเซเชฒเซ เชเซ) เชฎเชพเชเซ เชตเชชเชฐเชพเชถเชเชฐเซเชคเชพเช /compact command เชเชพเชคเซ เชเชฒเชพเชตเชตเซ เชชเชกเชคเซ, เชเซ เชนเชพเชเชฐ เชธเชเชตเชพเชฆ เช
เชจเซ summarizationโ (เชจเชตเซ เชตเชฟเชจเซเชกเซเชฎเชพเช เชเซเชฒเซ เชเซ) เชฎเชพเชเซเชจเซ custom instructions เชธเชพเชฅเซ Responses API เชจเซ query เชเชฐเชคเซ. Codex เชฎเชณเซเชฒเชพ summary เชงเชฐเชพเชตเชคเชพ assistant message เชจเซ เชจเชตเชพ input เชคเชฐเซเชเซ เชเชชเชฏเซเช เชเชฐเชคเซโ (เชจเชตเซ เชตเชฟเชจเซเชกเซเชฎเชพเช เชเซเชฒเซ เชเซ) เชชเชเซเชจเชพ conversation turns เชฎเชพเชเซ.
เชคเซเชฏเชพเชฐเชฅเซ Responses API เชเชพเชธ /responses/compact เชเชจเซเชกเชชเซเชเชจเซเชโ (เชจเชตเซ เชตเชฟเชจเซเชกเซเชฎเชพเช เชเซเชฒเซ เชเซ) เชจเซ เชธเชชเซเชฐเซเช เชเชฐเชตเชพ เชฎเชพเชเซ เชตเชฟเชเชธเชฟเชค เชฅเช เชเซ, เชเซ compaction เชตเชงเซ เชเชพเชฐเซเชฏเชเซเชทเชฎ เชฐเซเชคเซ เชเชฐเซ เชเซ. เชคเซ items เชจเซ เชธเซเชเชฟโ (เชจเชตเซ เชตเชฟเชจเซเชกเซเชฎเชพเช เชเซเชฒเซ เชเซ) เชชเชฐเชค เชเชชเซ เชเซ, เชเซเชจเซ เช
เชเชพเชเชจเชพ input เชจเซ เชเชเซเชฏเชพเช เชตเชพเชชเชฐเซเชจเซ context window เชเชพเชฒเซ เชเชฐเชคเซ เชตเชเชคเซ เชธเชเชตเชพเชฆ เชเชพเชฒเซ เชฐเชพเชเซ เชถเชเชพเชฏ. เช เชธเซเชเชฟเชฎเชพเช เชตเชฟเชถเซเชท type=compaction item เชนเซเชฏ เชเซ เชเซเชฎเชพเช เช
เชธเซเชชเชทเซเช encrypted_content item เชธเชพเชฎเซเชฒ เชนเซเชฏ เชเซ, เชเซ เชฎเซเชณ เชธเชเชตเชพเชฆ เช
เชเชเซ เชฎเซเชกเชฒเชจเซ latent understanding เชเชพเชณเชตเซ เชเซ. เชนเชตเซ, auto_compact_limitโ (เชจเชตเซ เชตเชฟเชจเซเชกเซเชฎเชพเช เชเซเชฒเซ เชเซ) เชตเชเชพเชฏ เชคเซเชฏเชพเชฐเซ Codex เช เชเชจเซเชกเชชเซเชเชจเซเช เชจเซ เชเชชเชฎเซเชณเซ เชเชชเชฏเซเช เชเชฐเซ เชเซ.
เช เชฎเซ Codex เชเชเชจเซเช เชฒเซเชชเชจเซ เชชเชฐเชฟเชเชฏ เชเชชเซเชฏเซ เช เชจเซ Codex เชฎเซเชกเชฒเชจเซ query เชเชฐเชคเซ เชตเชเชคเซ เชชเซเชคเชพเชจเซ context เชเซเชตเซ เชฐเซเชคเซ เชฌเชจเชพเชตเซ เชเซ เช เชจเซ เชธเชเชเชพเชฒเชฟเชค เชเชฐเซ เชเซ เชคเซ เชธเชฎเชเชพเชตเซเชฏเซเช. เช เชชเซเชฐเชเซเชฐเชฟเชฏเชพ เชฆเชฐเชฎเชฟเชฏเชพเชจ, เช เชฎเซ เชเชตเซ เชตเซเชฏเชตเชนเชพเชฐเชฟเช เชฌเชพเชฌเชคเซ เช เชจเซ เชถเซเชฐเซเชทเซเช เชชเชฆเซเชงเชคเชฟเช เชชเชฐ เชชเซเชฐเชเชพเชถ เชชเชพเชกเซเชฏเซ เชเซ Responses API เชชเชฐ เชเชเชจเซเช เชฒเซเชช เชฌเชจเชพเชตเชคเชพ เชเซเชเชชเชฃ เชฎเชพเชเซ เชเชชเชฏเซเชเซ เชเซ.
เชเซเชเซ เชเชเชจเซเช เชฒเซเชช Codex เชจเซ เชเชงเชพเชฐ เชชเซเชฐเซ เชชเชพเชกเซ เชเซ, เชคเซ เชฎเชพเชคเซเชฐ เชถเชฐเซเชเชค เชเซ. เชเชตเชจเชพเชฐเซ เชชเซเชธเซเชเซเชธเชฎเชพเช, เช เชฎเซ CLI เชจเซ architecture เชฎเชพเช เชเชเชกเซเช เชเชคเชฐเชถเซเช, tool use เชเซเชตเซ เชฐเซเชคเซ เช เชฎเชฒเชฎเชพเช เชฎเซเชเชพเชฏ เชเซ เชคเซ เชคเชชเชพเชธเซเชถเซเช เช เชจเซ Codex เชจเชพ sandboxing model เชจเซ เชตเชงเซ เชจเชเซเชเชฅเซ เชเซเชเชถเซเช.


