refactor: research - move domain to repository root

This commit is contained in:
tradecatlabs
2026-07-09 04:12:05 +08:00
parent 16f5e03c78
commit 0858b7a3cf
260 changed files with 968 additions and 306 deletions
+26
View File
@@ -0,0 +1,26 @@
# openai/codex 研究域 Agent 指南
本目录维护 `openai/codex` 的独立研究域。
## 目录职责
```text
openai-codex/
├── README.md # 研究域入口和判断层
├── AGENTS.md # 本目录维护规则
├── domain.yml # 事实摘要层:仓库元数据、研究角色、来源证据
├── analysis.md # L1 结构化研究结论、可借鉴点、风险和下一轮任务
├── deep-dive.md # L2 源码/结构深度研究、关键机制和可迁移模式
└── raw/ # 原始事实层:拉取到本地的一手材料快照
```
## 维护规则
- 本目录只研究 `openai/codex`,不要混入其他仓库的横向比较正文。
- 动态事实必须写入 `domain.yml.github_observed`,并更新 `observed_at`
- `raw/` 保存原始事实层,必须通过 `python3 scripts/fetch-research-raw.py` 刷新。
- 不手工改写 `raw/*.raw.*` 文件;稳定事实摘要再同步到 `domain.yml`
- README 只写判断、定位、使用方式和后续观察点,不堆外部 README 全文。
- `analysis.md` 写 L1 结构化理解;`deep-dive.md` 写 L2 源码证据、关键机制和可迁移模式。
- 如果需要横向比较,在 `research/README.md` 或新的对比文档中处理,不把本目录重新变成聚合域。
- 修改后运行 `make sync-doc-toc``make test`
+58
View File
@@ -0,0 +1,58 @@
# openai/codex 研究域
## 字多不看
- 本目录研究 `openai/codex` 这个外部仓库。
- 当前优先级:P1;研究角色:官方 coding agent 工具源码。
- GitHub 动态事实放在 `domain.yml`,观测日期为 2026-07-03。
## 快速导航
| 文档 | 定位 |
|:---|:---|
| [domain.yml](domain.yml) | 仓库事实快照、研究方向、优先级和来源证据。 |
| [analysis.md](analysis.md) | 本研究域的结构化研究结果、可借鉴点、风险和下一轮任务。 |
| [deep-dive.md](deep-dive.md) | L2 源码/结构深度研究、关键机制和可迁移模式。 |
| [AGENTS.md](AGENTS.md) | 本研究域维护规则。 |
<details>
<summary><strong>完整细粒度目录(点击展开/收起)</strong></summary>
### 细粒度目录
- [domain.yml](domain.yml) - 仓库事实快照、研究方向、优先级和来源证据。
- [analysis.md](analysis.md) - 本研究域的结构化研究结果、可借鉴点、风险和下一轮任务。
- [deep-dive.md](deep-dive.md) - L2 源码/结构深度研究、关键机制和可迁移模式。
- [AGENTS.md](AGENTS.md) - 本研究域维护规则。
</details>
## 使用方式
- 先读本 README 的判断,再读 `analysis.md``deep-dive.md` 的研究结论,最后读 `domain.yml`
- 需要引用 stars、forks、release、归档状态时,先重新核验 GitHub。
- 如果形成稳定方法论,再迁入 concepts、references、workflow 或 skills。
## 正文
### 研究定位
`openai/codex` 的当前研究定位是:官方 coding agent 工具源码。
### 当前判断
适合作为 AI coding agent 工具实现、权限、沙箱和 CLI 交互研究对象。
### 观察字段
- GitHub URLhttps://github.com/openai/codex
- 当前研究方向:`coding-agent-tooling`
- 当前优先级:P1
- 当前归档状态:`false`
- 主要语言:`Rust`
### 后续观察
- 是否有稳定文档结构、命令入口和可复用工作流。
- 是否能反哺本仓库的 concepts、references、workflow 或 skills。
- 是否存在许可证、归档状态、维护活跃度或生态迁移风险。
+65
View File
@@ -0,0 +1,65 @@
# openai/codex 研究分析
## 本轮结论
`openai/codex` 的核心价值不是“官方 CLI 怎么写”,而是展示了成熟 coding agent 必须有执行控制面。
它把配置、沙箱、执行策略、工具、技能、项目上下文和交互入口拆成显式对象,避免让高风险行为只靠
提示词自觉。
本仓最应该迁移的是治理思想:凡是能执行命令、改文件、访问网络或影响仓库状态的入口,都必须有
owner、风险等级、输入输出、dry-run、CI 状态和审计边界。
## 本地证据
- 研究对象:`openai/codex`
- 当前研究角色:官方 coding agent 工具源码
- 原始仓库:`raw/repository/`
- 原始来源清单:`raw/sources.yml`
- 事实摘要:`domain.yml`
- 深度证据:`deep-dive.md`
## 对标拆解
| 项 | 内容 |
|:---|:---|
| 参考对象 | `openai/codex` |
| 它解决的核心问题 | 让本地 coding agent 的命令执行、文件修改和工具调用进入可配置、可审计、可限制的系统 |
| 核心机制 | `config``sandboxing``linux-sandbox``tools``skills``docs/exec*``AGENTS.md` 分层 |
| 真正带来结果的动作 | 把执行风险做成系统对象,而不是把风险控制写成提示词愿望 |
| 可迁移做法 | 脚本登记表、风险等级、自动执行边界、人工审批边界、dry-run 和审计说明 |
| 不可迁移条件 | 不复制 Rust workspace、Bazel/Nix、CLI runtime 和产品级沙箱实现 |
| 下一步试用动作 | 先为本仓 `scripts/` 建立 `manifest.yml` 或等价登记表 |
## 改良迭代
| 改良目标 | 原模式 | 本仓版本 | 验证指标 |
|:---|:---|:---|:---|
| 脚本控制面 | Codex 将执行策略和沙箱显式化 | `scripts/manifest.yml` 记录脚本 owner、风险、输入、输出、CI 状态 | Agent 能判断哪些脚本可自动执行,哪些必须人工确认 |
| Agent 上下文接口 | Codex 使用 `AGENTS.md` 承载项目规则 | 保持根目录和子目录 `AGENTS.md` 为正式上下文入口 | 新目录或架构变更后索引和 AGENTS 同步 |
| 技能治理 | Codex 将 skills 作为可复用能力对象 | 本仓 skills 必须有触发条件、边界、输入输出和验证 | skill 不再只是 prompt 收藏 |
## 可迁移清单
- 对所有写仓库、网络访问、高风险发布或迁移脚本标注风险等级。
- 对脚本补齐输入、输出、幂等性、dry-run、失败恢复和审计说明。
- 把 Agent 可自动执行与必须人工确认的边界写进 `scripts/AGENTS.md`
- 把命令执行策略沉淀到 `docs/references/``docs/workflow/`
## 不可迁移清单
- 不把本仓改造成 Codex 类 runtime 产品。
- 不为了“看起来企业级”引入复杂沙箱、Bazel、Nix 或多语言构建系统。
- 不把官方产品实现等同于本仓必须采用的唯一标准。
## 验证动作
| 动作 | 成功信号 | 失败信号 |
|:---|:---|:---|
| 抽样 5 个 `scripts/` 文件登记 owner、风险、输入输出 | 维护者能一眼判断脚本能否自动跑 | 仍需要读源码才知道脚本风险 |
| 给写仓库脚本补 dry-run 或说明为何不能 dry-run | 高风险动作有预演或审计路径 | 脚本一运行就产生不可逆副作用 |
| 把脚本风险边界加入 `scripts/AGENTS.md` | Agent 执行前能引用明确规则 | 每次仍靠对话临时判断 |
## 沉淀判断
- 稳定结论应下沉到 `scripts/``docs/workflow/``docs/references/`
- `deep-dive.md` 保留源码证据;本文件负责把证据转成迁移动作。
+90
View File
@@ -0,0 +1,90 @@
# openai/codex 深度研究
## 研究级别
- 当前级别:L2 源码/结构深度研究。
- 研究对象:`openai/codex`
- 证据来源:本目录 `raw/` 下的 GitHub 元数据、README 快照和本地仓库工作树。
- 观察日期:2026-07-03。
## L2 结论
`openai/codex` 不是简单的 CLI 包,而是一个以 Rust 工作区为核心的 coding agent
控制面。它把协议、配置、沙箱、工具、提示词、技能、TUI、CLI 包装和 MCP 服务拆成相对清晰的
边界,说明成熟 coding agent 的核心不是“会调用模型”,而是把模型能力放进可配置、可审计、
可限制、可交互的执行系统里。
对本仓最有价值的不是复制实现,而是学习它的边界设计:执行策略、沙箱策略、Agent 指令、
技能、配置和交互文档都被显式建模,避免把高风险行为藏在零散脚本或提示词里。
## 源码证据
- `raw/repository/codex-rs/protocol/`:协议层,说明 agent 运行时需要稳定消息边界。
- `raw/repository/codex-rs/config/`:配置层,承载运行参数、模型和权限相关配置。
- `raw/repository/codex-rs/sandboxing/`:跨平台沙箱抽象,说明执行权限是核心产品能力。
- `raw/repository/codex-rs/linux-sandbox/`:Linux 沙箱实现,说明本地命令执行必须有边界。
- `raw/repository/codex-rs/tools/`:工具层,说明 agent 能力通过显式工具接口接入。
- `raw/repository/codex-rs/skills/`:技能层,说明可复用操作经验被工程化为独立对象。
- `raw/repository/codex-rs/tui/`:终端交互层,承载人机协作的主要用户界面。
- `raw/repository/codex-cli/bin/codex.js`:npm 分发入口,本质上是对核心运行时的包装。
- `raw/repository/docs/exec.md`:命令执行文档,说明执行行为需要公开契约。
- `raw/repository/docs/execpolicy.md`:执行策略文档,说明权限策略需要独立表达。
- `raw/repository/docs/sandbox.md`:沙箱文档,说明安全边界不是实现细节。
- `raw/repository/docs/agents_md.md`:Agent 指令文档,说明项目级上下文是正式接口。
- `raw/repository/docs/skills.md`:技能文档,说明技能不是杂项 prompt,而是可治理能力单元。
## 关键机制
### 协议优先
Codex 将 agent 运行时拆成协议、客户端、服务和界面等层次。这个结构把“模型说了什么”与
“系统如何执行”分开,降低了 CLI、TUI、MCP 和未来其他入口之间互相污染的概率。
### 沙箱和审批是核心对象
本地 agent 的最大风险来自命令执行、文件写入、网络访问和外部工具调用。Codex 把 sandbox、
exec policy 和配置作为显式层,而不是把风险控制埋进一段提示词。这是企业级 agent 的底线:
风险必须是系统能力,不是靠模型自觉。
### 文档就是运行契约
`docs/exec.md``docs/execpolicy.md``docs/sandbox.md``docs/agents_md.md`
`docs/skills.md` 共同构成运行契约。它们不是营销文档,而是告诉使用者和贡献者:
哪些行为可执行,哪些行为受限,哪些上下文会被读取,技能如何介入系统。
### 分发壳和核心运行时分离
`codex-cli/` 更像分发入口,核心复杂度集中在 `codex-rs/`。这种结构适合长期维护:
包管理、安装体验和跨平台入口可以变化,但 agent 核心边界保持稳定。
## 可迁移模式
- 把 agent 执行相关内容分成 `config``sandbox``exec policy``tools``skills`
`agent context` 六类,不混在一个 README 或提示词里。
- 对任何会执行命令、改文件或访问网络的脚本,增加风险等级、dry-run、审批策略和审计说明。
-`AGENTS.md` 视为项目级上下文接口,而不是临时提示词。
- 将 skills 视为可复用能力单元,要求有触发条件、边界、输入输出和验证方式。
- 对本仓 `scripts/``skills/``research/` 建立类似的控制面文档。
## 对本仓的影响
本仓已经有 `AGENTS.md``skills/``scripts/``research/` 和 raw 事实层,下一步应把这些
对象之间的运行关系写得更明确:
- `scripts/` 是仓库控制面,不是杂物间。
- `skills/` 是 Agent 可复用能力层,不是提示词收藏夹。
- `research/` 是研究对象网络,不是外链列表。
- `AGENTS.md` 是 AI 协作的项目级接口,不是单纯贡献指南。
## 风险和待验证项
- Codex 是官方产品仓库,行为可能随版本快速变化;动态事实必须以 `domain.yml` 观测日为准。
- 本地源码只能说明公开实现和文档,不能完整代表云端模型、服务端策略或私有运行逻辑。
- 本轮没有运行 Codex 自身测试,结论只覆盖结构研究,不覆盖性能、稳定性或真实使用体验。
## 下一步 L3 验证任务
- 把本仓 `scripts/` 的风险分级和可执行入口整理成 `manifest.yml` 或等价登记表。
- 为高风险脚本补齐 dry-run、输入输出、owner、CI 状态和审计说明。
- 从 Codex 的 `exec policy``sandbox` 文档中抽象本仓可用的脚本治理检查清单。
-`docs/references/` 沉淀“coding agent 控制面”模板,避免研究结论长期滞留在 research。
+32
View File
@@ -0,0 +1,32 @@
version: 1
repo:
name: openai/codex
source_name: openai/codex
url: https://github.com/openai/codex
research:
domain_id: openai-codex
domain_name: openai/codex 研究域
primary_direction: coding-agent-tooling
role: 官方 coding agent 工具源码
priority: 1
why_study: 适合作为 AI coding agent 工具实现、权限、沙箱和 CLI 交互研究对象。
github_observed:
observed_at: '2026-07-03'
source: gh repo view
stars: 95112
forks: 14105
archived: false
language: Rust
license: apache-2.0
default_branch: main
pushed_at: '2026-07-02T22:05:48Z'
updated_at: '2026-07-02T21:01:16Z'
latest_release: rust-v0.142.5
homepage: ''
topics: []
source_evidence:
file: ChatGPT-中文Vibe Coding仓库 (2).md
line: 56
maintenance:
fact_policy: GitHub 动态字段只代表 observed_at 当日快照,更新结论前必须重新核验。
split_policy: 本目录已经是一等研究域;更深分析放入本目录新增文档。
+12
View File
@@ -0,0 +1,12 @@
# raw/ Agent 指南
本目录是 `openai/codex` 的原始事实层。
## 维护规则
- 只保存从研究对象拉取的一手材料,不写分析判断。
- `repository/` 是本地 Git 工作树,刷新时由脚本 clone 或 fast-forward pull。
- 不手工改写 `*.raw.*` 文件内容;需要刷新时运行 `python3 scripts/fetch-research-raw.py`
- `sources.yml` 必须记录拉取时间、来源命令和每个文件的状态。
- 外部 README 原文必须保存为 `.txt`,避免本仓库 Markdown 链接检查误判。
- 分析、判断、采用建议和沉淀路径写回上一级 `README.md``analysis.md``decisions.md`
+16
View File
@@ -0,0 +1,16 @@
# raw 事实层
本目录保存 `openai/codex` 的本地原始材料快照。
这里不写分析结论,只保存可复查的一手资料:
- `sources.yml`:来源清单、拉取时间、命令和文件状态。
- `repository/`Git 仓库工作树;本目录由 `.gitignore` 忽略,只作为本地研究材料。
- `github-repo.raw.json`GitHub 仓库元数据。
- `github-readme.raw.md.txt`GitHub README 原文快照。
- `github-license.raw.txt`GitHub license 原文快照;仓库无 license 时可能不存在。
- `github-root-contents.raw.json`:默认分支根目录内容快照。
- `github-languages.raw.json`GitHub language 统计快照。
- `github-latest-release.raw.json`:最新 release 快照;无 release 时可能不存在。
`repository/` 是外部源码快照,不参与本仓库 Markdown、链接、README/AGENTS 覆盖检查。原始 README 使用 `.txt` 后缀保存,避免其中的外部相对链接被本仓库 Markdown 链接检查误判。
@@ -0,0 +1,16 @@
{
"Rust": 38644372,
"Python": 1061534,
"Starlark": 91784,
"TypeScript": 86475,
"Shell": 58255,
"PowerShell": 48899,
"JavaScript": 28986,
"Jupyter Notebook": 20702,
"HTML": 18785,
"Just": 6391,
"Smarty": 5842,
"Nix": 4427,
"Dockerfile": 883,
"C": 52
}
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,201 @@
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
1. Definitions.
"License" shall mean the terms and conditions for use, reproduction,
and distribution as defined by Sections 1 through 9 of this document.
"Licensor" shall mean the copyright owner or entity authorized by
the copyright owner that is granting the License.
"Legal Entity" shall mean the union of the acting entity and all
other entities that control, are controlled by, or are under common
control with that entity. For the purposes of this definition,
"control" means (i) the power, direct or indirect, to cause the
direction or management of such entity, whether by contract or
otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity.
"You" (or "Your") shall mean an individual or Legal Entity
exercising permissions granted by this License.
"Source" form shall mean the preferred form for making modifications,
including but not limited to software source code, documentation
source, and configuration files.
"Object" form shall mean any form resulting from mechanical
transformation or translation of a Source form, including but
not limited to compiled object code, generated documentation,
and conversions to other media types.
"Work" shall mean the work of authorship, whether in Source or
Object form, made available under the License, as indicated by a
copyright notice that is included in or attached to the work
(an example is provided in the Appendix below).
"Derivative Works" shall mean any work, whether in Source or Object
form, that is based on (or derived from) the Work and for which the
editorial revisions, annotations, elaborations, or other modifications
represent, as a whole, an original work of authorship. For the purposes
of this License, Derivative Works shall not include works that remain
separable from, or merely link (or bind by name) to the interfaces of,
the Work and Derivative Works thereof.
"Contribution" shall mean any work of authorship, including
the original version of the Work and any modifications or additions
to that Work or Derivative Works thereof, that is intentionally
submitted to Licensor for inclusion in the Work by the copyright owner
or by an individual or Legal Entity authorized to submit on behalf of
the copyright owner. For the purposes of this definition, "submitted"
means any form of electronic, verbal, or written communication sent
to the Licensor or its representatives, including but not limited to
communication on electronic mailing lists, source code control systems,
and issue tracking systems that are managed by, or on behalf of, the
Licensor for the purpose of discussing and improving the Work, but
excluding communication that is conspicuously marked or otherwise
designated in writing by the copyright owner as "Not a Contribution."
"Contributor" shall mean Licensor and any individual or Legal Entity
on behalf of whom a Contribution has been received by Licensor and
subsequently incorporated within the Work.
2. Grant of Copyright License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
copyright license to reproduce, prepare Derivative Works of,
publicly display, publicly perform, sublicense, and distribute the
Work and such Derivative Works in Source or Object form.
3. Grant of Patent License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
(except as stated in this section) patent license to make, have made,
use, offer to sell, sell, import, and otherwise transfer the Work,
where such license applies only to those patent claims licensable
by such Contributor that are necessarily infringed by their
Contribution(s) alone or by combination of their Contribution(s)
with the Work to which such Contribution(s) was submitted. If You
institute patent litigation against any entity (including a
cross-claim or counterclaim in a lawsuit) alleging that the Work
or a Contribution incorporated within the Work constitutes direct
or contributory patent infringement, then any patent licenses
granted to You under this License for that Work shall terminate
as of the date such litigation is filed.
4. Redistribution. You may reproduce and distribute copies of the
Work or Derivative Works thereof in any medium, with or without
modifications, and in Source or Object form, provided that You
meet the following conditions:
(a) You must give any other recipients of the Work or
Derivative Works a copy of this License; and
(b) You must cause any modified files to carry prominent notices
stating that You changed the files; and
(c) You must retain, in the Source form of any Derivative Works
that You distribute, all copyright, patent, trademark, and
attribution notices from the Source form of the Work,
excluding those notices that do not pertain to any part of
the Derivative Works; and
(d) If the Work includes a "NOTICE" text file as part of its
distribution, then any Derivative Works that You distribute must
include a readable copy of the attribution notices contained
within such NOTICE file, excluding those notices that do not
pertain to any part of the Derivative Works, in at least one
of the following places: within a NOTICE text file distributed
as part of the Derivative Works; within the Source form or
documentation, if provided along with the Derivative Works; or,
within a display generated by the Derivative Works, if and
wherever such third-party notices normally appear. The contents
of the NOTICE file are for informational purposes only and
do not modify the License. You may add Your own attribution
notices within Derivative Works that You distribute, alongside
or as an addendum to the NOTICE text from the Work, provided
that such additional attribution notices cannot be construed
as modifying the License.
You may add Your own copyright statement to Your modifications and
may provide additional or different license terms and conditions
for use, reproduction, or distribution of Your modifications, or
for any such Derivative Works as a whole, provided Your use,
reproduction, and distribution of the Work otherwise complies with
the conditions stated in this License.
5. Submission of Contributions. Unless You explicitly state otherwise,
any Contribution intentionally submitted for inclusion in the Work
by You to the Licensor shall be under the terms and conditions of
this License, without any additional terms or conditions.
Notwithstanding the above, nothing herein shall supersede or modify
the terms of any separate license agreement you may have executed
with Licensor regarding such Contributions.
6. Trademarks. This License does not grant permission to use the trade
names, trademarks, service marks, or product names of the Licensor,
except as required for reasonable and customary use in describing the
origin of the Work and reproducing the content of the NOTICE file.
7. Disclaimer of Warranty. Unless required by applicable law or
agreed to in writing, Licensor provides the Work (and each
Contributor provides its Contributions) on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied, including, without limitation, any warranties or conditions
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
PARTICULAR PURPOSE. You are solely responsible for determining the
appropriateness of using or redistributing the Work and assume any
risks associated with Your exercise of permissions under this License.
8. Limitation of Liability. In no event and under no legal theory,
whether in tort (including negligence), contract, or otherwise,
unless required by applicable law (such as deliberate and grossly
negligent acts) or agreed to in writing, shall any Contributor be
liable to You for damages, including any direct, indirect, special,
incidental, or consequential damages of any character arising as a
result of this License or out of the use or inability to use the
Work (including but not limited to damages for loss of goodwill,
work stoppage, computer failure or malfunction, or any and all
other commercial damages or losses), even if such Contributor
has been advised of the possibility of such damages.
9. Accepting Warranty or Additional Liability. While redistributing
the Work or Derivative Works thereof, You may choose to offer,
and charge a fee for, acceptance of support, warranty, indemnity,
or other liability obligations and/or rights consistent with this
License. However, in accepting such obligations, You may act only
on Your own behalf and on Your sole responsibility, not on behalf
of any other Contributor, and only if You agree to indemnify,
defend, and hold each Contributor harmless for any liability
incurred by, or claims asserted against, such Contributor by reason
of your accepting any such warranty or additional liability.
END OF TERMS AND CONDITIONS
APPENDIX: How to apply the Apache License to your work.
To apply the Apache License to your work, attach the following
boilerplate notice, with the fields enclosed by brackets "[]"
replaced with your own identifying information. (Don't include
the brackets!) The text should be enclosed in the appropriate
comment syntax for the file format. We also recommend that a
file or class name and description of purpose be included on the
same "printed page" as the copyright notice for easier
identification within third-party archives.
Copyright 2025 OpenAI
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
@@ -0,0 +1,71 @@
<p align="center"><strong>Codex CLI</strong> is a coding agent from OpenAI that runs locally on your computer.
<p align="center">
<img src="https://github.com/openai/codex/blob/main/.github/codex-cli-splash.png" alt="Codex CLI splash" width="80%" />
</p>
</br>
If you want Codex in your code editor (VS Code, Cursor, Windsurf), <a href="https://developers.openai.com/codex/ide">install in your IDE.</a>
</br>If you want the desktop app experience, run <code>codex app</code> or visit <a href="https://chatgpt.com/codex?app-landing-page=true">the Codex App page</a>.
</br>If you are looking for the <em>cloud-based agent</em> from OpenAI, <strong>Codex Web</strong>, go to <a href="https://chatgpt.com/codex">chatgpt.com/codex</a>.</p>
---
## Quickstart
### Installing and running Codex CLI
Run the following on Mac or Linux to install Codex CLI:
```shell
curl -fsSL https://chatgpt.com/codex/install.sh | sh
```
Run the following on Windows to install Codex CLI:
```shell
powershell -ExecutionPolicy ByPass -c "irm https://chatgpt.com/codex/install.ps1 | iex"
```
Codex CLI can also be installed via the following package managers:
```shell
# Install using npm
npm install -g @openai/codex
```
```shell
# Install using Homebrew
brew install --cask codex
```
Then simply run `codex` to get started.
<details>
<summary>You can also go to the <a href="https://github.com/openai/codex/releases/latest">latest GitHub Release</a> and download the appropriate binary for your platform.</summary>
Each GitHub Release contains many executables, but in practice, you likely want one of these:
- macOS
- Apple Silicon/arm64: `codex-aarch64-apple-darwin.tar.gz`
- x86_64 (older Mac hardware): `codex-x86_64-apple-darwin.tar.gz`
- Linux
- x86_64: `codex-x86_64-unknown-linux-musl.tar.gz`
- arm64: `codex-aarch64-unknown-linux-musl.tar.gz`
Each archive contains a single entry with the platform baked into the name (e.g., `codex-x86_64-unknown-linux-musl`), so you likely want to rename it to `codex` after extracting it.
</details>
### Using Codex with your ChatGPT plan
Run `codex` and select **Sign in with ChatGPT**. We recommend signing into your ChatGPT account to use Codex as part of your Plus, Pro, Business, Edu, or Enterprise plan. [Learn more about what's included in your ChatGPT plan](https://help.openai.com/en/articles/11369540-codex-in-chatgpt).
You can also use Codex with an API key, but this requires [additional setup](https://developers.openai.com/codex/auth#sign-in-with-an-api-key).
## Docs
- [**Codex Documentation**](https://developers.openai.com/codex)
- [**Contributing**](./docs/contributing.md)
- [**Installing & building**](./docs/install.md)
- [**Open source fund**](./docs/open-source-fund.md)
This repository is licensed under the [Apache-2.0 License](LICENSE).
@@ -0,0 +1,35 @@
{
"createdAt": "2025-04-13T05:37:54Z",
"defaultBranchRef": {
"name": "main"
},
"description": "Lightweight coding agent that runs in your terminal",
"forkCount": 14107,
"homepageUrl": "",
"isArchived": false,
"isFork": false,
"isMirror": false,
"latestRelease": {
"name": "0.142.5",
"publishedAt": "2026-07-01T01:15:44Z",
"tagName": "rust-v0.142.5",
"url": "https://github.com/openai/codex/releases/tag/rust-v0.142.5"
},
"licenseInfo": {
"key": "apache-2.0",
"name": "Apache License 2.0",
"nickname": ""
},
"nameWithOwner": "openai/codex",
"primaryLanguage": {
"name": "Rust"
},
"pushedAt": "2026-07-02T22:41:54Z",
"repositoryTopics": null,
"stargazerCount": 95113,
"updatedAt": "2026-07-02T22:35:39Z",
"url": "https://github.com/openai/codex",
"watchers": {
"totalCount": 513
}
}
@@ -0,0 +1,722 @@
[
{
"name": ".bazelignore",
"path": ".bazelignore",
"sha": "2e90753cb8e29946973b91d1042c9ea249c728cf",
"size": 141,
"url": "https://api.github.com/repos/openai/codex/contents/.bazelignore?ref=main",
"html_url": "https://github.com/openai/codex/blob/main/.bazelignore",
"git_url": "https://api.github.com/repos/openai/codex/git/blobs/2e90753cb8e29946973b91d1042c9ea249c728cf",
"download_url": "https://raw.githubusercontent.com/openai/codex/main/.bazelignore",
"type": "file",
"_links": {
"self": "https://api.github.com/repos/openai/codex/contents/.bazelignore?ref=main",
"git": "https://api.github.com/repos/openai/codex/git/blobs/2e90753cb8e29946973b91d1042c9ea249c728cf",
"html": "https://github.com/openai/codex/blob/main/.bazelignore"
}
},
{
"name": ".bazelrc",
"path": ".bazelrc",
"sha": "de01a87443feabd16e530ac0d518a4587abd8695",
"size": 13390,
"url": "https://api.github.com/repos/openai/codex/contents/.bazelrc?ref=main",
"html_url": "https://github.com/openai/codex/blob/main/.bazelrc",
"git_url": "https://api.github.com/repos/openai/codex/git/blobs/de01a87443feabd16e530ac0d518a4587abd8695",
"download_url": "https://raw.githubusercontent.com/openai/codex/main/.bazelrc",
"type": "file",
"_links": {
"self": "https://api.github.com/repos/openai/codex/contents/.bazelrc?ref=main",
"git": "https://api.github.com/repos/openai/codex/git/blobs/de01a87443feabd16e530ac0d518a4587abd8695",
"html": "https://github.com/openai/codex/blob/main/.bazelrc"
}
},
{
"name": ".bazelversion",
"path": ".bazelversion",
"sha": "f7ee06693c17a06e2a0f51ef7eb2a61866e77b8e",
"size": 6,
"url": "https://api.github.com/repos/openai/codex/contents/.bazelversion?ref=main",
"html_url": "https://github.com/openai/codex/blob/main/.bazelversion",
"git_url": "https://api.github.com/repos/openai/codex/git/blobs/f7ee06693c17a06e2a0f51ef7eb2a61866e77b8e",
"download_url": "https://raw.githubusercontent.com/openai/codex/main/.bazelversion",
"type": "file",
"_links": {
"self": "https://api.github.com/repos/openai/codex/contents/.bazelversion?ref=main",
"git": "https://api.github.com/repos/openai/codex/git/blobs/f7ee06693c17a06e2a0f51ef7eb2a61866e77b8e",
"html": "https://github.com/openai/codex/blob/main/.bazelversion"
}
},
{
"name": ".codespellignore",
"path": ".codespellignore",
"sha": "23924fe083cb56e71183fbf80541d530d2c8a8b6",
"size": 30,
"url": "https://api.github.com/repos/openai/codex/contents/.codespellignore?ref=main",
"html_url": "https://github.com/openai/codex/blob/main/.codespellignore",
"git_url": "https://api.github.com/repos/openai/codex/git/blobs/23924fe083cb56e71183fbf80541d530d2c8a8b6",
"download_url": "https://raw.githubusercontent.com/openai/codex/main/.codespellignore",
"type": "file",
"_links": {
"self": "https://api.github.com/repos/openai/codex/contents/.codespellignore?ref=main",
"git": "https://api.github.com/repos/openai/codex/git/blobs/23924fe083cb56e71183fbf80541d530d2c8a8b6",
"html": "https://github.com/openai/codex/blob/main/.codespellignore"
}
},
{
"name": ".codespellrc",
"path": ".codespellrc",
"sha": "838b7e874e460113049f9c7b20c45943d0f9adb5",
"size": 321,
"url": "https://api.github.com/repos/openai/codex/contents/.codespellrc?ref=main",
"html_url": "https://github.com/openai/codex/blob/main/.codespellrc",
"git_url": "https://api.github.com/repos/openai/codex/git/blobs/838b7e874e460113049f9c7b20c45943d0f9adb5",
"download_url": "https://raw.githubusercontent.com/openai/codex/main/.codespellrc",
"type": "file",
"_links": {
"self": "https://api.github.com/repos/openai/codex/contents/.codespellrc?ref=main",
"git": "https://api.github.com/repos/openai/codex/git/blobs/838b7e874e460113049f9c7b20c45943d0f9adb5",
"html": "https://github.com/openai/codex/blob/main/.codespellrc"
}
},
{
"name": ".codex",
"path": ".codex",
"sha": "a6917d204085f77beac621d94836b913a425dd65",
"size": 0,
"url": "https://api.github.com/repos/openai/codex/contents/.codex?ref=main",
"html_url": "https://github.com/openai/codex/tree/main/.codex",
"git_url": "https://api.github.com/repos/openai/codex/git/trees/a6917d204085f77beac621d94836b913a425dd65",
"download_url": null,
"type": "dir",
"_links": {
"self": "https://api.github.com/repos/openai/codex/contents/.codex?ref=main",
"git": "https://api.github.com/repos/openai/codex/git/trees/a6917d204085f77beac621d94836b913a425dd65",
"html": "https://github.com/openai/codex/tree/main/.codex"
}
},
{
"name": ".devcontainer",
"path": ".devcontainer",
"sha": "e2bd112665eb4944596d920bd17c3ef94c353fc7",
"size": 0,
"url": "https://api.github.com/repos/openai/codex/contents/.devcontainer?ref=main",
"html_url": "https://github.com/openai/codex/tree/main/.devcontainer",
"git_url": "https://api.github.com/repos/openai/codex/git/trees/e2bd112665eb4944596d920bd17c3ef94c353fc7",
"download_url": null,
"type": "dir",
"_links": {
"self": "https://api.github.com/repos/openai/codex/contents/.devcontainer?ref=main",
"git": "https://api.github.com/repos/openai/codex/git/trees/e2bd112665eb4944596d920bd17c3ef94c353fc7",
"html": "https://github.com/openai/codex/tree/main/.devcontainer"
}
},
{
"name": ".gitattributes",
"path": ".gitattributes",
"sha": "57c5fe6e88da359dc880c6a710ded60c3932741a",
"size": 112,
"url": "https://api.github.com/repos/openai/codex/contents/.gitattributes?ref=main",
"html_url": "https://github.com/openai/codex/blob/main/.gitattributes",
"git_url": "https://api.github.com/repos/openai/codex/git/blobs/57c5fe6e88da359dc880c6a710ded60c3932741a",
"download_url": "https://raw.githubusercontent.com/openai/codex/main/.gitattributes",
"type": "file",
"_links": {
"self": "https://api.github.com/repos/openai/codex/contents/.gitattributes?ref=main",
"git": "https://api.github.com/repos/openai/codex/git/blobs/57c5fe6e88da359dc880c6a710ded60c3932741a",
"html": "https://github.com/openai/codex/blob/main/.gitattributes"
}
},
{
"name": ".github",
"path": ".github",
"sha": "1006cce2b3b815581066576a8abf87fea50fe559",
"size": 0,
"url": "https://api.github.com/repos/openai/codex/contents/.github?ref=main",
"html_url": "https://github.com/openai/codex/tree/main/.github",
"git_url": "https://api.github.com/repos/openai/codex/git/trees/1006cce2b3b815581066576a8abf87fea50fe559",
"download_url": null,
"type": "dir",
"_links": {
"self": "https://api.github.com/repos/openai/codex/contents/.github?ref=main",
"git": "https://api.github.com/repos/openai/codex/git/trees/1006cce2b3b815581066576a8abf87fea50fe559",
"html": "https://github.com/openai/codex/tree/main/.github"
}
},
{
"name": ".gitignore",
"path": ".gitignore",
"sha": "dbcd8633154a13966c231033a6c07ad8be169c73",
"size": 931,
"url": "https://api.github.com/repos/openai/codex/contents/.gitignore?ref=main",
"html_url": "https://github.com/openai/codex/blob/main/.gitignore",
"git_url": "https://api.github.com/repos/openai/codex/git/blobs/dbcd8633154a13966c231033a6c07ad8be169c73",
"download_url": "https://raw.githubusercontent.com/openai/codex/main/.gitignore",
"type": "file",
"_links": {
"self": "https://api.github.com/repos/openai/codex/contents/.gitignore?ref=main",
"git": "https://api.github.com/repos/openai/codex/git/blobs/dbcd8633154a13966c231033a6c07ad8be169c73",
"html": "https://github.com/openai/codex/blob/main/.gitignore"
}
},
{
"name": ".markdownlint-cli2.yaml",
"path": ".markdownlint-cli2.yaml",
"sha": "15b472c61cb73bf14f6c327266e479229f555eca",
"size": 78,
"url": "https://api.github.com/repos/openai/codex/contents/.markdownlint-cli2.yaml?ref=main",
"html_url": "https://github.com/openai/codex/blob/main/.markdownlint-cli2.yaml",
"git_url": "https://api.github.com/repos/openai/codex/git/blobs/15b472c61cb73bf14f6c327266e479229f555eca",
"download_url": "https://raw.githubusercontent.com/openai/codex/main/.markdownlint-cli2.yaml",
"type": "file",
"_links": {
"self": "https://api.github.com/repos/openai/codex/contents/.markdownlint-cli2.yaml?ref=main",
"git": "https://api.github.com/repos/openai/codex/git/blobs/15b472c61cb73bf14f6c327266e479229f555eca",
"html": "https://github.com/openai/codex/blob/main/.markdownlint-cli2.yaml"
}
},
{
"name": ".npmrc",
"path": ".npmrc",
"sha": "4153fe87bb5f08b63514128adf30f1643ef3f1fc",
"size": 104,
"url": "https://api.github.com/repos/openai/codex/contents/.npmrc?ref=main",
"html_url": "https://github.com/openai/codex/blob/main/.npmrc",
"git_url": "https://api.github.com/repos/openai/codex/git/blobs/4153fe87bb5f08b63514128adf30f1643ef3f1fc",
"download_url": "https://raw.githubusercontent.com/openai/codex/main/.npmrc",
"type": "file",
"_links": {
"self": "https://api.github.com/repos/openai/codex/contents/.npmrc?ref=main",
"git": "https://api.github.com/repos/openai/codex/git/blobs/4153fe87bb5f08b63514128adf30f1643ef3f1fc",
"html": "https://github.com/openai/codex/blob/main/.npmrc"
}
},
{
"name": ".prettierignore",
"path": ".prettierignore",
"sha": "f5b50f6ba22810b725c2d07a24f4a77ac3b8004e",
"size": 96,
"url": "https://api.github.com/repos/openai/codex/contents/.prettierignore?ref=main",
"html_url": "https://github.com/openai/codex/blob/main/.prettierignore",
"git_url": "https://api.github.com/repos/openai/codex/git/blobs/f5b50f6ba22810b725c2d07a24f4a77ac3b8004e",
"download_url": "https://raw.githubusercontent.com/openai/codex/main/.prettierignore",
"type": "file",
"_links": {
"self": "https://api.github.com/repos/openai/codex/contents/.prettierignore?ref=main",
"git": "https://api.github.com/repos/openai/codex/git/blobs/f5b50f6ba22810b725c2d07a24f4a77ac3b8004e",
"html": "https://github.com/openai/codex/blob/main/.prettierignore"
}
},
{
"name": ".prettierrc.toml",
"path": ".prettierrc.toml",
"sha": "4c58c583e5fa327928190f625a1095a9c4d9e72f",
"size": 170,
"url": "https://api.github.com/repos/openai/codex/contents/.prettierrc.toml?ref=main",
"html_url": "https://github.com/openai/codex/blob/main/.prettierrc.toml",
"git_url": "https://api.github.com/repos/openai/codex/git/blobs/4c58c583e5fa327928190f625a1095a9c4d9e72f",
"download_url": "https://raw.githubusercontent.com/openai/codex/main/.prettierrc.toml",
"type": "file",
"_links": {
"self": "https://api.github.com/repos/openai/codex/contents/.prettierrc.toml?ref=main",
"git": "https://api.github.com/repos/openai/codex/git/blobs/4c58c583e5fa327928190f625a1095a9c4d9e72f",
"html": "https://github.com/openai/codex/blob/main/.prettierrc.toml"
}
},
{
"name": ".vscode",
"path": ".vscode",
"sha": "b26f3b4bbfa530719068fbf14ad6ea3a4b502b33",
"size": 0,
"url": "https://api.github.com/repos/openai/codex/contents/.vscode?ref=main",
"html_url": "https://github.com/openai/codex/tree/main/.vscode",
"git_url": "https://api.github.com/repos/openai/codex/git/trees/b26f3b4bbfa530719068fbf14ad6ea3a4b502b33",
"download_url": null,
"type": "dir",
"_links": {
"self": "https://api.github.com/repos/openai/codex/contents/.vscode?ref=main",
"git": "https://api.github.com/repos/openai/codex/git/trees/b26f3b4bbfa530719068fbf14ad6ea3a4b502b33",
"html": "https://github.com/openai/codex/tree/main/.vscode"
}
},
{
"name": "AGENTS.md",
"path": "AGENTS.md",
"sha": "bdfa798f5c695c65e57941ffde020a183a466b14",
"size": 22521,
"url": "https://api.github.com/repos/openai/codex/contents/AGENTS.md?ref=main",
"html_url": "https://github.com/openai/codex/blob/main/AGENTS.md",
"git_url": "https://api.github.com/repos/openai/codex/git/blobs/bdfa798f5c695c65e57941ffde020a183a466b14",
"download_url": "https://raw.githubusercontent.com/openai/codex/main/AGENTS.md",
"type": "file",
"_links": {
"self": "https://api.github.com/repos/openai/codex/contents/AGENTS.md?ref=main",
"git": "https://api.github.com/repos/openai/codex/git/blobs/bdfa798f5c695c65e57941ffde020a183a466b14",
"html": "https://github.com/openai/codex/blob/main/AGENTS.md"
}
},
{
"name": "BUILD.bazel",
"path": "BUILD.bazel",
"sha": "a82126e6f1ec2ba080cc51a9d2db61311e3dff87",
"size": 2183,
"url": "https://api.github.com/repos/openai/codex/contents/BUILD.bazel?ref=main",
"html_url": "https://github.com/openai/codex/blob/main/BUILD.bazel",
"git_url": "https://api.github.com/repos/openai/codex/git/blobs/a82126e6f1ec2ba080cc51a9d2db61311e3dff87",
"download_url": "https://raw.githubusercontent.com/openai/codex/main/BUILD.bazel",
"type": "file",
"_links": {
"self": "https://api.github.com/repos/openai/codex/contents/BUILD.bazel?ref=main",
"git": "https://api.github.com/repos/openai/codex/git/blobs/a82126e6f1ec2ba080cc51a9d2db61311e3dff87",
"html": "https://github.com/openai/codex/blob/main/BUILD.bazel"
}
},
{
"name": "CHANGELOG.md",
"path": "CHANGELOG.md",
"sha": "2eb564c560a4c85507169a26637f6bce59f7e1fb",
"size": 93,
"url": "https://api.github.com/repos/openai/codex/contents/CHANGELOG.md?ref=main",
"html_url": "https://github.com/openai/codex/blob/main/CHANGELOG.md",
"git_url": "https://api.github.com/repos/openai/codex/git/blobs/2eb564c560a4c85507169a26637f6bce59f7e1fb",
"download_url": "https://raw.githubusercontent.com/openai/codex/main/CHANGELOG.md",
"type": "file",
"_links": {
"self": "https://api.github.com/repos/openai/codex/contents/CHANGELOG.md?ref=main",
"git": "https://api.github.com/repos/openai/codex/git/blobs/2eb564c560a4c85507169a26637f6bce59f7e1fb",
"html": "https://github.com/openai/codex/blob/main/CHANGELOG.md"
}
},
{
"name": "LICENSE",
"path": "LICENSE",
"sha": "4606e72e042564097e8780d66c1d4dcb611869bd",
"size": 10926,
"url": "https://api.github.com/repos/openai/codex/contents/LICENSE?ref=main",
"html_url": "https://github.com/openai/codex/blob/main/LICENSE",
"git_url": "https://api.github.com/repos/openai/codex/git/blobs/4606e72e042564097e8780d66c1d4dcb611869bd",
"download_url": "https://raw.githubusercontent.com/openai/codex/main/LICENSE",
"type": "file",
"_links": {
"self": "https://api.github.com/repos/openai/codex/contents/LICENSE?ref=main",
"git": "https://api.github.com/repos/openai/codex/git/blobs/4606e72e042564097e8780d66c1d4dcb611869bd",
"html": "https://github.com/openai/codex/blob/main/LICENSE"
}
},
{
"name": "MODULE.bazel",
"path": "MODULE.bazel",
"sha": "20d80f3962608c733c01ca557821e7dcaf4032f4",
"size": 15820,
"url": "https://api.github.com/repos/openai/codex/contents/MODULE.bazel?ref=main",
"html_url": "https://github.com/openai/codex/blob/main/MODULE.bazel",
"git_url": "https://api.github.com/repos/openai/codex/git/blobs/20d80f3962608c733c01ca557821e7dcaf4032f4",
"download_url": "https://raw.githubusercontent.com/openai/codex/main/MODULE.bazel",
"type": "file",
"_links": {
"self": "https://api.github.com/repos/openai/codex/contents/MODULE.bazel?ref=main",
"git": "https://api.github.com/repos/openai/codex/git/blobs/20d80f3962608c733c01ca557821e7dcaf4032f4",
"html": "https://github.com/openai/codex/blob/main/MODULE.bazel"
}
},
{
"name": "MODULE.bazel.lock",
"path": "MODULE.bazel.lock",
"sha": "d572f68f21b1d150486b9e050523201b43698c87",
"size": 1443536,
"url": "https://api.github.com/repos/openai/codex/contents/MODULE.bazel.lock?ref=main",
"html_url": "https://github.com/openai/codex/blob/main/MODULE.bazel.lock",
"git_url": "https://api.github.com/repos/openai/codex/git/blobs/d572f68f21b1d150486b9e050523201b43698c87",
"download_url": "https://raw.githubusercontent.com/openai/codex/main/MODULE.bazel.lock",
"type": "file",
"_links": {
"self": "https://api.github.com/repos/openai/codex/contents/MODULE.bazel.lock?ref=main",
"git": "https://api.github.com/repos/openai/codex/git/blobs/d572f68f21b1d150486b9e050523201b43698c87",
"html": "https://github.com/openai/codex/blob/main/MODULE.bazel.lock"
}
},
{
"name": "NOTICE",
"path": "NOTICE",
"sha": "2805899d56d0332d175cfc613c67d45d6f006db7",
"size": 242,
"url": "https://api.github.com/repos/openai/codex/contents/NOTICE?ref=main",
"html_url": "https://github.com/openai/codex/blob/main/NOTICE",
"git_url": "https://api.github.com/repos/openai/codex/git/blobs/2805899d56d0332d175cfc613c67d45d6f006db7",
"download_url": "https://raw.githubusercontent.com/openai/codex/main/NOTICE",
"type": "file",
"_links": {
"self": "https://api.github.com/repos/openai/codex/contents/NOTICE?ref=main",
"git": "https://api.github.com/repos/openai/codex/git/blobs/2805899d56d0332d175cfc613c67d45d6f006db7",
"html": "https://github.com/openai/codex/blob/main/NOTICE"
}
},
{
"name": "README.md",
"path": "README.md",
"sha": "bb2a9d18c3f95ea1a16394a7131634ac1b1ae68e",
"size": 2814,
"url": "https://api.github.com/repos/openai/codex/contents/README.md?ref=main",
"html_url": "https://github.com/openai/codex/blob/main/README.md",
"git_url": "https://api.github.com/repos/openai/codex/git/blobs/bb2a9d18c3f95ea1a16394a7131634ac1b1ae68e",
"download_url": "https://raw.githubusercontent.com/openai/codex/main/README.md",
"type": "file",
"_links": {
"self": "https://api.github.com/repos/openai/codex/contents/README.md?ref=main",
"git": "https://api.github.com/repos/openai/codex/git/blobs/bb2a9d18c3f95ea1a16394a7131634ac1b1ae68e",
"html": "https://github.com/openai/codex/blob/main/README.md"
}
},
{
"name": "SECURITY.md",
"path": "SECURITY.md",
"sha": "29a9b903df5da8e789d685efe8012fa4edd775e5",
"size": 923,
"url": "https://api.github.com/repos/openai/codex/contents/SECURITY.md?ref=main",
"html_url": "https://github.com/openai/codex/blob/main/SECURITY.md",
"git_url": "https://api.github.com/repos/openai/codex/git/blobs/29a9b903df5da8e789d685efe8012fa4edd775e5",
"download_url": "https://raw.githubusercontent.com/openai/codex/main/SECURITY.md",
"type": "file",
"_links": {
"self": "https://api.github.com/repos/openai/codex/contents/SECURITY.md?ref=main",
"git": "https://api.github.com/repos/openai/codex/git/blobs/29a9b903df5da8e789d685efe8012fa4edd775e5",
"html": "https://github.com/openai/codex/blob/main/SECURITY.md"
}
},
{
"name": "announcement_tip.toml",
"path": "announcement_tip.toml",
"sha": "79c0daea761e0f634960dd39e2dff6bdbfd02f63",
"size": 999,
"url": "https://api.github.com/repos/openai/codex/contents/announcement_tip.toml?ref=main",
"html_url": "https://github.com/openai/codex/blob/main/announcement_tip.toml",
"git_url": "https://api.github.com/repos/openai/codex/git/blobs/79c0daea761e0f634960dd39e2dff6bdbfd02f63",
"download_url": "https://raw.githubusercontent.com/openai/codex/main/announcement_tip.toml",
"type": "file",
"_links": {
"self": "https://api.github.com/repos/openai/codex/contents/announcement_tip.toml?ref=main",
"git": "https://api.github.com/repos/openai/codex/git/blobs/79c0daea761e0f634960dd39e2dff6bdbfd02f63",
"html": "https://github.com/openai/codex/blob/main/announcement_tip.toml"
}
},
{
"name": "bazel",
"path": "bazel",
"sha": "2e3e531fbb14710c27ec8bebc8100eb10d2f08c1",
"size": 0,
"url": "https://api.github.com/repos/openai/codex/contents/bazel?ref=main",
"html_url": "https://github.com/openai/codex/tree/main/bazel",
"git_url": "https://api.github.com/repos/openai/codex/git/trees/2e3e531fbb14710c27ec8bebc8100eb10d2f08c1",
"download_url": null,
"type": "dir",
"_links": {
"self": "https://api.github.com/repos/openai/codex/contents/bazel?ref=main",
"git": "https://api.github.com/repos/openai/codex/git/trees/2e3e531fbb14710c27ec8bebc8100eb10d2f08c1",
"html": "https://github.com/openai/codex/tree/main/bazel"
}
},
{
"name": "cliff.toml",
"path": "cliff.toml",
"sha": "f31e1bd89ccb6a51267988c275379c39d9f6cb6f",
"size": 1155,
"url": "https://api.github.com/repos/openai/codex/contents/cliff.toml?ref=main",
"html_url": "https://github.com/openai/codex/blob/main/cliff.toml",
"git_url": "https://api.github.com/repos/openai/codex/git/blobs/f31e1bd89ccb6a51267988c275379c39d9f6cb6f",
"download_url": "https://raw.githubusercontent.com/openai/codex/main/cliff.toml",
"type": "file",
"_links": {
"self": "https://api.github.com/repos/openai/codex/contents/cliff.toml?ref=main",
"git": "https://api.github.com/repos/openai/codex/git/blobs/f31e1bd89ccb6a51267988c275379c39d9f6cb6f",
"html": "https://github.com/openai/codex/blob/main/cliff.toml"
}
},
{
"name": "codex-cli",
"path": "codex-cli",
"sha": "431909b081ed5200cc84f3679c34ed7eda805e10",
"size": 0,
"url": "https://api.github.com/repos/openai/codex/contents/codex-cli?ref=main",
"html_url": "https://github.com/openai/codex/tree/main/codex-cli",
"git_url": "https://api.github.com/repos/openai/codex/git/trees/431909b081ed5200cc84f3679c34ed7eda805e10",
"download_url": null,
"type": "dir",
"_links": {
"self": "https://api.github.com/repos/openai/codex/contents/codex-cli?ref=main",
"git": "https://api.github.com/repos/openai/codex/git/trees/431909b081ed5200cc84f3679c34ed7eda805e10",
"html": "https://github.com/openai/codex/tree/main/codex-cli"
}
},
{
"name": "codex-rs",
"path": "codex-rs",
"sha": "3d96779641d8546881385639ac0994676cd8e817",
"size": 0,
"url": "https://api.github.com/repos/openai/codex/contents/codex-rs?ref=main",
"html_url": "https://github.com/openai/codex/tree/main/codex-rs",
"git_url": "https://api.github.com/repos/openai/codex/git/trees/3d96779641d8546881385639ac0994676cd8e817",
"download_url": null,
"type": "dir",
"_links": {
"self": "https://api.github.com/repos/openai/codex/contents/codex-rs?ref=main",
"git": "https://api.github.com/repos/openai/codex/git/trees/3d96779641d8546881385639ac0994676cd8e817",
"html": "https://github.com/openai/codex/tree/main/codex-rs"
}
},
{
"name": "defs.bzl",
"path": "defs.bzl",
"sha": "c8fd35e039be98abf5212b628c5684a97aa8f03d",
"size": 27840,
"url": "https://api.github.com/repos/openai/codex/contents/defs.bzl?ref=main",
"html_url": "https://github.com/openai/codex/blob/main/defs.bzl",
"git_url": "https://api.github.com/repos/openai/codex/git/blobs/c8fd35e039be98abf5212b628c5684a97aa8f03d",
"download_url": "https://raw.githubusercontent.com/openai/codex/main/defs.bzl",
"type": "file",
"_links": {
"self": "https://api.github.com/repos/openai/codex/contents/defs.bzl?ref=main",
"git": "https://api.github.com/repos/openai/codex/git/blobs/c8fd35e039be98abf5212b628c5684a97aa8f03d",
"html": "https://github.com/openai/codex/blob/main/defs.bzl"
}
},
{
"name": "docs",
"path": "docs",
"sha": "9dcc9638a2ee96a4c4426c036e6c8d6317f905b5",
"size": 0,
"url": "https://api.github.com/repos/openai/codex/contents/docs?ref=main",
"html_url": "https://github.com/openai/codex/tree/main/docs",
"git_url": "https://api.github.com/repos/openai/codex/git/trees/9dcc9638a2ee96a4c4426c036e6c8d6317f905b5",
"download_url": null,
"type": "dir",
"_links": {
"self": "https://api.github.com/repos/openai/codex/contents/docs?ref=main",
"git": "https://api.github.com/repos/openai/codex/git/trees/9dcc9638a2ee96a4c4426c036e6c8d6317f905b5",
"html": "https://github.com/openai/codex/tree/main/docs"
}
},
{
"name": "flake.lock",
"path": "flake.lock",
"sha": "8348ebd272985a958e66771ca6dd7153af782a1b",
"size": 1108,
"url": "https://api.github.com/repos/openai/codex/contents/flake.lock?ref=main",
"html_url": "https://github.com/openai/codex/blob/main/flake.lock",
"git_url": "https://api.github.com/repos/openai/codex/git/blobs/8348ebd272985a958e66771ca6dd7153af782a1b",
"download_url": "https://raw.githubusercontent.com/openai/codex/main/flake.lock",
"type": "file",
"_links": {
"self": "https://api.github.com/repos/openai/codex/contents/flake.lock?ref=main",
"git": "https://api.github.com/repos/openai/codex/git/blobs/8348ebd272985a958e66771ca6dd7153af782a1b",
"html": "https://github.com/openai/codex/blob/main/flake.lock"
}
},
{
"name": "flake.nix",
"path": "flake.nix",
"sha": "1fd41c6f14452f64de42f9da30002e8d669a33aa",
"size": 2673,
"url": "https://api.github.com/repos/openai/codex/contents/flake.nix?ref=main",
"html_url": "https://github.com/openai/codex/blob/main/flake.nix",
"git_url": "https://api.github.com/repos/openai/codex/git/blobs/1fd41c6f14452f64de42f9da30002e8d669a33aa",
"download_url": "https://raw.githubusercontent.com/openai/codex/main/flake.nix",
"type": "file",
"_links": {
"self": "https://api.github.com/repos/openai/codex/contents/flake.nix?ref=main",
"git": "https://api.github.com/repos/openai/codex/git/blobs/1fd41c6f14452f64de42f9da30002e8d669a33aa",
"html": "https://github.com/openai/codex/blob/main/flake.nix"
}
},
{
"name": "justfile",
"path": "justfile",
"sha": "d4a0e6566c6782a72ea1f4e86e3f45650b148c94",
"size": 6391,
"url": "https://api.github.com/repos/openai/codex/contents/justfile?ref=main",
"html_url": "https://github.com/openai/codex/blob/main/justfile",
"git_url": "https://api.github.com/repos/openai/codex/git/blobs/d4a0e6566c6782a72ea1f4e86e3f45650b148c94",
"download_url": "https://raw.githubusercontent.com/openai/codex/main/justfile",
"type": "file",
"_links": {
"self": "https://api.github.com/repos/openai/codex/contents/justfile?ref=main",
"git": "https://api.github.com/repos/openai/codex/git/blobs/d4a0e6566c6782a72ea1f4e86e3f45650b148c94",
"html": "https://github.com/openai/codex/blob/main/justfile"
}
},
{
"name": "package.json",
"path": "package.json",
"sha": "ddda581bf2ae6ce2aeca68f41f42663d2b49ed9e",
"size": 1242,
"url": "https://api.github.com/repos/openai/codex/contents/package.json?ref=main",
"html_url": "https://github.com/openai/codex/blob/main/package.json",
"git_url": "https://api.github.com/repos/openai/codex/git/blobs/ddda581bf2ae6ce2aeca68f41f42663d2b49ed9e",
"download_url": "https://raw.githubusercontent.com/openai/codex/main/package.json",
"type": "file",
"_links": {
"self": "https://api.github.com/repos/openai/codex/contents/package.json?ref=main",
"git": "https://api.github.com/repos/openai/codex/git/blobs/ddda581bf2ae6ce2aeca68f41f42663d2b49ed9e",
"html": "https://github.com/openai/codex/blob/main/package.json"
}
},
{
"name": "patches",
"path": "patches",
"sha": "721b0433fb68636493f2336373248fa4046cc51b",
"size": 0,
"url": "https://api.github.com/repos/openai/codex/contents/patches?ref=main",
"html_url": "https://github.com/openai/codex/tree/main/patches",
"git_url": "https://api.github.com/repos/openai/codex/git/trees/721b0433fb68636493f2336373248fa4046cc51b",
"download_url": null,
"type": "dir",
"_links": {
"self": "https://api.github.com/repos/openai/codex/contents/patches?ref=main",
"git": "https://api.github.com/repos/openai/codex/git/trees/721b0433fb68636493f2336373248fa4046cc51b",
"html": "https://github.com/openai/codex/tree/main/patches"
}
},
{
"name": "pnpm-lock.yaml",
"path": "pnpm-lock.yaml",
"sha": "2d4c6f34972b61e8336433ff7e6a6d2b35974df9",
"size": 172297,
"url": "https://api.github.com/repos/openai/codex/contents/pnpm-lock.yaml?ref=main",
"html_url": "https://github.com/openai/codex/blob/main/pnpm-lock.yaml",
"git_url": "https://api.github.com/repos/openai/codex/git/blobs/2d4c6f34972b61e8336433ff7e6a6d2b35974df9",
"download_url": "https://raw.githubusercontent.com/openai/codex/main/pnpm-lock.yaml",
"type": "file",
"_links": {
"self": "https://api.github.com/repos/openai/codex/contents/pnpm-lock.yaml?ref=main",
"git": "https://api.github.com/repos/openai/codex/git/blobs/2d4c6f34972b61e8336433ff7e6a6d2b35974df9",
"html": "https://github.com/openai/codex/blob/main/pnpm-lock.yaml"
}
},
{
"name": "pnpm-workspace.yaml",
"path": "pnpm-workspace.yaml",
"sha": "7f5e2d915ed5fd8803d32cf280c07e53e8abfef4",
"size": 317,
"url": "https://api.github.com/repos/openai/codex/contents/pnpm-workspace.yaml?ref=main",
"html_url": "https://github.com/openai/codex/blob/main/pnpm-workspace.yaml",
"git_url": "https://api.github.com/repos/openai/codex/git/blobs/7f5e2d915ed5fd8803d32cf280c07e53e8abfef4",
"download_url": "https://raw.githubusercontent.com/openai/codex/main/pnpm-workspace.yaml",
"type": "file",
"_links": {
"self": "https://api.github.com/repos/openai/codex/contents/pnpm-workspace.yaml?ref=main",
"git": "https://api.github.com/repos/openai/codex/git/blobs/7f5e2d915ed5fd8803d32cf280c07e53e8abfef4",
"html": "https://github.com/openai/codex/blob/main/pnpm-workspace.yaml"
}
},
{
"name": "rbe.bzl",
"path": "rbe.bzl",
"sha": "57e301ac776d9c7196e9c854bc6e27ce2718d886",
"size": 1488,
"url": "https://api.github.com/repos/openai/codex/contents/rbe.bzl?ref=main",
"html_url": "https://github.com/openai/codex/blob/main/rbe.bzl",
"git_url": "https://api.github.com/repos/openai/codex/git/blobs/57e301ac776d9c7196e9c854bc6e27ce2718d886",
"download_url": "https://raw.githubusercontent.com/openai/codex/main/rbe.bzl",
"type": "file",
"_links": {
"self": "https://api.github.com/repos/openai/codex/contents/rbe.bzl?ref=main",
"git": "https://api.github.com/repos/openai/codex/git/blobs/57e301ac776d9c7196e9c854bc6e27ce2718d886",
"html": "https://github.com/openai/codex/blob/main/rbe.bzl"
}
},
{
"name": "scripts",
"path": "scripts",
"sha": "9b905cd326eebd22c7af999d617e96c94f1885ca",
"size": 0,
"url": "https://api.github.com/repos/openai/codex/contents/scripts?ref=main",
"html_url": "https://github.com/openai/codex/tree/main/scripts",
"git_url": "https://api.github.com/repos/openai/codex/git/trees/9b905cd326eebd22c7af999d617e96c94f1885ca",
"download_url": null,
"type": "dir",
"_links": {
"self": "https://api.github.com/repos/openai/codex/contents/scripts?ref=main",
"git": "https://api.github.com/repos/openai/codex/git/trees/9b905cd326eebd22c7af999d617e96c94f1885ca",
"html": "https://github.com/openai/codex/tree/main/scripts"
}
},
{
"name": "sdk",
"path": "sdk",
"sha": "78e9530fbbd9503d5fe60b394510ebf1d3b90210",
"size": 0,
"url": "https://api.github.com/repos/openai/codex/contents/sdk?ref=main",
"html_url": "https://github.com/openai/codex/tree/main/sdk",
"git_url": "https://api.github.com/repos/openai/codex/git/trees/78e9530fbbd9503d5fe60b394510ebf1d3b90210",
"download_url": null,
"type": "dir",
"_links": {
"self": "https://api.github.com/repos/openai/codex/contents/sdk?ref=main",
"git": "https://api.github.com/repos/openai/codex/git/trees/78e9530fbbd9503d5fe60b394510ebf1d3b90210",
"html": "https://github.com/openai/codex/tree/main/sdk"
}
},
{
"name": "third_party",
"path": "third_party",
"sha": "2b829b89c6f6f89d1946636419cb9ac7bec0a7fb",
"size": 0,
"url": "https://api.github.com/repos/openai/codex/contents/third_party?ref=main",
"html_url": "https://github.com/openai/codex/tree/main/third_party",
"git_url": "https://api.github.com/repos/openai/codex/git/trees/2b829b89c6f6f89d1946636419cb9ac7bec0a7fb",
"download_url": null,
"type": "dir",
"_links": {
"self": "https://api.github.com/repos/openai/codex/contents/third_party?ref=main",
"git": "https://api.github.com/repos/openai/codex/git/trees/2b829b89c6f6f89d1946636419cb9ac7bec0a7fb",
"html": "https://github.com/openai/codex/tree/main/third_party"
}
},
{
"name": "tools",
"path": "tools",
"sha": "8e7fafe48997ecb918b944c0278b533f43598b7d",
"size": 0,
"url": "https://api.github.com/repos/openai/codex/contents/tools?ref=main",
"html_url": "https://github.com/openai/codex/tree/main/tools",
"git_url": "https://api.github.com/repos/openai/codex/git/trees/8e7fafe48997ecb918b944c0278b533f43598b7d",
"download_url": null,
"type": "dir",
"_links": {
"self": "https://api.github.com/repos/openai/codex/contents/tools?ref=main",
"git": "https://api.github.com/repos/openai/codex/git/trees/8e7fafe48997ecb918b944c0278b533f43598b7d",
"html": "https://github.com/openai/codex/tree/main/tools"
}
},
{
"name": "workspace_root_test_launcher.bat.tpl",
"path": "workspace_root_test_launcher.bat.tpl",
"sha": "3613b91d76c9dceac740d6b6ccb12bb899b70275",
"size": 5842,
"url": "https://api.github.com/repos/openai/codex/contents/workspace_root_test_launcher.bat.tpl?ref=main",
"html_url": "https://github.com/openai/codex/blob/main/workspace_root_test_launcher.bat.tpl",
"git_url": "https://api.github.com/repos/openai/codex/git/blobs/3613b91d76c9dceac740d6b6ccb12bb899b70275",
"download_url": "https://raw.githubusercontent.com/openai/codex/main/workspace_root_test_launcher.bat.tpl",
"type": "file",
"_links": {
"self": "https://api.github.com/repos/openai/codex/contents/workspace_root_test_launcher.bat.tpl?ref=main",
"git": "https://api.github.com/repos/openai/codex/git/blobs/3613b91d76c9dceac740d6b6ccb12bb899b70275",
"html": "https://github.com/openai/codex/blob/main/workspace_root_test_launcher.bat.tpl"
}
},
{
"name": "workspace_root_test_launcher.sh.tpl",
"path": "workspace_root_test_launcher.sh.tpl",
"sha": "4606fd8b15274f3e52aca493a34f32264d124c06",
"size": 4713,
"url": "https://api.github.com/repos/openai/codex/contents/workspace_root_test_launcher.sh.tpl?ref=main",
"html_url": "https://github.com/openai/codex/blob/main/workspace_root_test_launcher.sh.tpl",
"git_url": "https://api.github.com/repos/openai/codex/git/blobs/4606fd8b15274f3e52aca493a34f32264d124c06",
"download_url": "https://raw.githubusercontent.com/openai/codex/main/workspace_root_test_launcher.sh.tpl",
"type": "file",
"_links": {
"self": "https://api.github.com/repos/openai/codex/contents/workspace_root_test_launcher.sh.tpl?ref=main",
"git": "https://api.github.com/repos/openai/codex/git/blobs/4606fd8b15274f3e52aca493a34f32264d124c06",
"html": "https://github.com/openai/codex/blob/main/workspace_root_test_launcher.sh.tpl"
}
}
]
+37
View File
@@ -0,0 +1,37 @@
version: 1
domain_id: openai-codex
object:
type: github_repository
name: openai/codex
url: https://github.com/openai/codex
pulled_at: '2026-07-02T22:47:14+00:00'
puller: scripts/fetch-research-raw.py
files:
- path: repository/
kind: git-working-tree
status: ok
source: 'git clone --depth=1 --single-branch --no-tags https://github.com/openai/codex.git research/openai-codex/raw/repository'
- path: github-repo.raw.json
kind: repository-metadata
status: ok
source: 'gh repo view openai/codex --json nameWithOwner,url,description,homepageUrl,isArchived,isFork,isMirror,defaultBranchRef,licenseInfo,primaryLanguage,repositoryTopics,stargazerCount,forkCount,watchers,createdAt,updatedAt,pushedAt,latestRelease --jq .'
- path: github-readme.raw.md.txt
kind: readme
status: ok
source: 'gh api repos/openai/codex/readme -H Accept: application/vnd.github.raw'
- path: github-license.raw.txt
kind: license
status: ok
source: 'gh api repos/openai/codex/license -H Accept: application/vnd.github.raw'
- path: github-root-contents.raw.json
kind: root-contents
status: ok
source: 'gh api repos/openai/codex/contents'
- path: github-languages.raw.json
kind: languages
status: ok
source: 'gh api repos/openai/codex/languages'
- path: github-latest-release.raw.json
kind: latest-release
status: ok
source: 'gh api repos/openai/codex/releases/latest'