Commit Graph
6857 Commits
Author SHA1 Message Date
Michael Bolin e04df285d2 Merge 0166c1b156 into sapling-pr-archive-bolinfest 2026-01-30 10:33:28 -08:00
Michael Bolin 0166c1b156 chore: rename Chatgpt -> ChatGpt in type names 2026-01-30 10:30:50 -08:00
Michael Bolin 40bf11bd52 chore: fix the build breakage that came from a merge race (#10239)
I think I needed to rebase on top of
https://github.com/openai/codex/pull/10167 before merging
https://github.com/openai/codex/pull/10208.
2026-01-30 10:29:54 -08:00
Michael Bolin d9e5bb54c0 merge commit for archive created by Sapling 2026-01-30 10:27:00 -08:00
Michael Bolin 0a9767f5a9 chore: fix the build breakage that came from a merge race 2026-01-30 10:26:54 -08:00
Michael Bolin d4d50d50eb merge commit for archive created by Sapling 2026-01-30 10:23:49 -08:00
Michael Bolin 51c4d20959 chore: fix the build breakage that came from a merge race 2026-01-30 10:23:38 -08:00
baumann-oaiandNick Baumann 1ce722ed2e plan mode: add TL;DR checkpoint and client behavior note (#10195)
## Summary
- Tightens Plan Mode to encourage exploration-first behavior and more
back-and-forth alignment.
- Adds a required TL;DR checkpoint before drafting the full plan.
- Clarifies client behavior that can cause premature “Implement this
plan?” prompts.

## What changed
- Require at least one targeted non-mutating exploration pass before the
first user question.
- Insert a TL;DR checkpoint between Phase 2 (intent) and Phase 3
(implementation).
- TL;DR checkpoint guidance:
  - Label: “Proposed Plan (TL;DR)”
  - Format: 3–5 bullets using `- `
  - Options: exactly one option, “Approve”
- `isOther: true`, with explicit guidance that “None of the above” is
the edit path in the current UI.
- Require the final plan to include a TL;DR consistent with the approved
checkpoint.

## Why
- In Plan Mode, any normal assistant message at turn completion is
treated as plan content by the client. This can trigger premature
“Implement this plan?” prompts.
- The TL;DR checkpoint aligns on direction before Codex drafts a long,
decision-complete plan.

## Testing
- Manual: built the local CLI and verified the flow now explores first,
presents a TL;DR checkpoint, and only drafts the full plan after
approval.

---------

Co-authored-by: Nick Baumann <@openai.com>
2026-01-30 10:14:46 -08:00
Michael Bolin b755941563 merge commit for archive created by Sapling 2026-01-30 10:06:44 -08:00
Michael Bolin 8d29f5fb33 feat: codex app-server --default-chatgpt-proxy-auth 2026-01-30 10:06:34 -08:00
gt-oai 5662eb8b75 Load exec policy rules from requirements (#10190)
`requirements.toml` should be able to specify rules which always run. 

My intention here was that these rules could only ever be restrictive,
which means the decision can be "prompt" or "forbidden" but never
"allow". A requirement of "you must always allow this command" didn't
make sense to me, but happy to be gaveled otherwise.

Rules already applies the most restrictive decision, so we can safely
merge these with rules found in other config folders.
2026-01-30 18:04:09 +00:00
Michael Bolin 3eb472e389 Merge 373183c9a5 into sapling-pr-archive-bolinfest 2026-01-30 09:54:03 -08:00
Michael Bolin 373183c9a5 feat: codex app-server --default-chatgpt-proxy-auth 2026-01-30 09:53:59 -08:00
Michael Bolin 6a67d24b1f Merge 1286b29a65 into sapling-pr-archive-bolinfest 2026-01-30 09:51:35 -08:00
Michael Bolin 1286b29a65 feat: codex app-server --default-chatgpt-proxy-auth 2026-01-30 09:51:12 -08:00
Dylan Hurd 23db79fae2 chore(feature) Experimental: Smart Approvals (#10211)
## Summary
Let's start getting feedback on this feature 😅 

## Testing
- [x] existing tests pass
2026-01-30 10:41:37 -07:00
Dylan Hurd dfafc546ab chore(feature) Experimental: Personality (#10212)
## Summary
Let users start opting in to trying out personalities

## Testing
- [x] existing tests pass
2026-01-30 10:41:22 -07:00
Michael Bolin 377ab0c77c feat: refactor CodexAuth so invalid state cannot be represented (#10208)
Previously, `CodexAuth` was defined as follows:


https://github.com/openai/codex/blob/d550fbf41afc09d7d7b5ac813aea38de07b2a73f/codex-rs/core/src/auth.rs#L39-L46

But if you looked at its constructors, we had creation for
`AuthMode::ApiKey` where `storage` was built using a nonsensical path
(`PathBuf::new()`) and `auth_dot_json` was `None`:


https://github.com/openai/codex/blob/d550fbf41afc09d7d7b5ac813aea38de07b2a73f/codex-rs/core/src/auth.rs#L212-L220

By comparison, when `AuthMode::ChatGPT` was used, `api_key` was always
`None`:


https://github.com/openai/codex/blob/d550fbf41afc09d7d7b5ac813aea38de07b2a73f/codex-rs/core/src/auth.rs#L665-L671

https://github.com/openai/codex/pull/10012 took things further because
it introduced a new `ChatgptAuthTokens` variant to `AuthMode`, which is
important in when invoking `account/login/start` via the app server, but
most logic _internal_ to the app server should just reason about two
`AuthMode` variants: `ApiKey` and `ChatGPT`.

This PR tries to clean things up as follows:

- `LoginAccountParams` and `AuthMode` in `codex-rs/app-server-protocol/`
both continue to have the `ChatgptAuthTokens` variant, though it is used
exclusively for the on-the-wire messaging.
- `codex-rs/core/src/auth.rs` now has its own `AuthMode` enum, which
only has two variants: `ApiKey` and `ChatGPT`.
- `CodexAuth` has been changed from a struct to an enum. It is a
disjoint union where each variant (`ApiKey`, `ChatGpt`, and
`ChatGptAuthTokens`) have only the associated fields that make sense for
that variant.

---
[//]: # (BEGIN SAPLING FOOTER)
Stack created with [Sapling](https://sapling-scm.com). Best reviewed
with [ReviewStack](https://reviewstack.dev/openai/codex/pull/10208).
* #10224
* __->__ #10208
2026-01-30 09:33:23 -08:00
jif-oai 0212f4010e nit: fix db with multiple metadata lines (#10237) 2026-01-30 17:32:10 +00:00
jif-oai 079f4952e0 feat: heuristic coloring of logs (#10228) 2026-01-30 18:26:49 +01:00
jif-oai eff11f792b feat: improve logs client (#10229) 2026-01-30 18:23:18 +01:00
jif-oai 887bec0dee chore: do not clean the DB anymore (#10232) 2026-01-30 18:23:00 +01:00
jif-oai 09d25e91e9 fix: make sure the shell exists (#10222) 2026-01-30 14:18:31 +01:00
jif-oai 6cee538380 explorer prompt (#10225) 2026-01-30 13:50:33 +01:00
gt-oai e85d019daa Fetch Requirements from cloud (#10167)
Load requirements from Codex Backend. It only does this for enterprise
customers signed in with ChatGPT.

Todo in follow-up PRs:
* Add to app-server and exec too
* Switch from fail-open to fail-closed on failure
2026-01-30 12:03:29 +00:00
pap-openaiandjif-oai 1ef5455eb6 Conversation naming (#8991)
Session renaming:
- `/rename my_session`
- `/rename` without arg and passing an argument in `customViewPrompt`
- AppExitInfo shows resume hint using the session name if set instead of
uuid, defaults to uuid if not set
- Names are stored in `CODEX_HOME/sessions.jsonl`

Session resuming:
- codex resume <name> lookup for `CODEX_HOME/sessions.jsonl` first entry
matching the name and resumes the session

---------

Co-authored-by: jif-oai <jif@openai.com>
2026-01-30 10:40:09 +00:00
Michael Bolin c6be423f7d merge commit for archive created by Sapling 2026-01-30 02:18:57 -08:00
Michael Bolin 87515b095d feat: codex app-server --default-chatgpt-proxy-auth 2026-01-30 02:18:45 -08:00
jif-oai 25ad414680 chore: unify metric (#10220) 2026-01-30 11:13:43 +01:00
Michael Bolin 69b5614606 Merge ffb4fe6e7d into sapling-pr-archive-bolinfest 2026-01-30 01:56:48 -08:00
Michael Bolin ffb4fe6e7d feat: annotate experimental fields in app server protocol 2026-01-30 01:56:43 -08:00
Michael Bolin 0641b2802f Merge ef4ef22a73 into sapling-pr-archive-bolinfest 2026-01-30 01:45:43 -08:00
Michael Bolin ef4ef22a73 feat: annotate experimental fields in app server protocol 2026-01-30 01:45:38 -08:00
Michael Bolin 33648583f0 Merge b53b2de0c0 into sapling-pr-archive-bolinfest 2026-01-30 01:39:22 -08:00
Michael Bolin b53b2de0c0 feat: annotate experimental fields in app server protocol 2026-01-30 01:39:13 -08:00
jif-oai 129787493f feat: backfill timing metric (#10218)
1. Add a metric to measure the backfill time
2. Add a unit to the timing histogram
2026-01-30 10:19:41 +01:00
Shijie Rao a0ccef9d5c Chore: plan mode do not include free form question and always include isOther (#10210)
We should never ask a freeform question when planning and we should
always include isOther as an escape hatch.
2026-01-30 01:19:24 -08:00
Josh McKinney c0cad80668 Add community links to startup tooltips (#10177)
## Summary
- add startup tooltip for OpenAI community Discord
- add startup tooltip for Codex community forum

## Testing
- not run (text-only tooltip change)
2026-01-30 10:14:15 +01:00
jif-oai f8056e62d4 nit: actually run tests (#10217) 2026-01-30 10:02:46 +01:00
jif-oai a270a28a06 feat: add output to /ps (#10154)
<img width="599" height="238" alt="Screenshot 2026-01-29 at 13 24 57"
src="https://github.com/user-attachments/assets/1e9a5af2-f649-476c-b310-ae4938814538"
/>
2026-01-30 09:00:44 +01:00
Matthew Zeng 34f89b12d0 MCP tool call approval (simplified version) (#10200)
Add elicitation approval request for MCP tool call requests.
2026-01-29 23:40:32 -08:00
Dylan Hurd e3ab0bd973 chore(personality) new schema with fallbacks (#10147)
## Summary
Let's dial in this api contract in a bit more with more robust fallback
behavior when model_instructions_template is false.

Switches to a more explicit template / variables structure, with more
fallbacks.

## Testing
- [x] Adding unit tests
- [x] Tested locally
2026-01-30 00:10:12 -07:00
Michael Bolin b3e19c3ba3 Merge a2f33ae5c8 into sapling-pr-archive-bolinfest 2026-01-29 23:08:24 -08:00
Michael Bolin bc5c3df7cd merge commit for archive created by Sapling 2026-01-29 22:59:42 -08:00
Michael Bolin 4f2a604b04 feat: refactor CodexAuth so invalid state cannot be represented 2026-01-29 22:59:37 -08:00
Michael Bolin a2f33ae5c8 feat: migrate TUI to use app-server v2 2026-01-29 22:59:14 -08:00
Michael Bolin 73b370b74e merge commit for archive created by Sapling 2026-01-29 22:52:02 -08:00
Michael Bolin 9988f3198a feat: refactor CodexAuth so invalid state cannot be represented 2026-01-29 22:51:55 -08:00
Michael Bolin 34d399aba8 Merge bac0597b69 into sapling-pr-archive-bolinfest 2026-01-29 22:27:05 -08:00
Michael Bolin bac0597b69 feat: refactor CodexAuth so invalid state cannot be represented 2026-01-29 22:26:54 -08:00