Commit Graph
6851 Commits
Author SHA1 Message Date
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
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
alexsong-oai d550fbf41a load from yaml (#10194) 2026-01-29 21:44:12 -05:00
Josh McKinney 36f2fe8af9 feat(tui): route employee feedback follow-ups to internal link (#10198)
## Problem
OpenAI employees were sent to the public GitHub issue flow after
`/feedback`, which is the wrong follow-up path internally.

## Mental model
After feedback upload completes, we render a follow-up link/message.
That link should be audience-aware but must not change the upload
pipeline itself.

## Non-goals
- Changing how feedback is captured or uploaded
- Changing external user behavior

## Tradeoffs
We detect employees via the authenticated account email suffix
(`@openai.com`). If the email is unavailable (e.g., API key auth), we
default to the external behavior.

## Architecture
- Introduce `FeedbackAudience` and thread it from `App` -> `ChatWidget`
-> `FeedbackNoteView`
- Gate internal messaging/links on `FeedbackAudience::OpenAiEmployee`
- Internal follow-up link is now `http://go/codex-feedback-internal`
- External GitHub URL remains byte-for-byte identical

## Observability
No new telemetry; this only changes rendered follow-up instructions.

## Tests
- `just fmt`
- `cargo test -p codex-tui --lib`
2026-01-30 02:12:46 +00:00
Michael Bolin 7d28728591 Merge 3e4aea3097 into sapling-pr-archive-bolinfest 2026-01-29 17:37:06 -08:00
Michael Bolin 3e4aea3097 feat: migrate TUI to use app-server v2 2026-01-29 17:37:02 -08:00
Michael Bolin 0b3f9be30a merge commit for archive created by Sapling 2026-01-29 17:20:37 -08:00
willwang-openai a9cf449a80 add error messages for the go plan type (#10181)
Adds support for the Go plan type
Updates rate limit error messages to point to the usage page
2026-01-30 01:17:25 +00:00