Commit Graph

6642 Commits

Author SHA1 Message Date
Eric Traut
2f1591db16 Fix argument comment lint 2026-05-16 18:25:23 -07:00
Eric Traut
aea47290fd Wait before resolving turn start context 2026-05-16 18:12:46 -07:00
Eric Traut
eb533c3616 Merge branch 'etraut/next-turn-state-core' into etraut/next-turn-state-app-server 2026-05-16 18:06:00 -07:00
Eric Traut
98c38ee9bf Simplify turn context handler 2026-05-16 18:05:35 -07:00
Eric Traut
bb41cb44cf Merge branch 'etraut/next-turn-state-core' into etraut/next-turn-state-app-server 2026-05-16 17:58:43 -07:00
Eric Traut
529c16f268 Merge branch 'etraut/next-turn-state-remove-override-context' into etraut/next-turn-state-core 2026-05-16 17:58:11 -07:00
Eric Traut
5b41df2613 Simplify turn context update cleanup 2026-05-16 17:57:42 -07:00
Eric Traut
28f6e90082 Merge branch 'etraut/next-turn-state-core' into etraut/next-turn-state-app-server
# Conflicts:
#	codex-rs/app-server/src/request_processors/turn_processor.rs
2026-05-16 17:43:32 -07:00
Eric Traut
91e427f9f4 Merge branch 'etraut/next-turn-state-remove-override-context' into etraut/next-turn-state-core 2026-05-16 17:42:54 -07:00
Eric Traut
5aeec5fa05 Merge branch 'etraut/next-turn-state-input-op-consolidation' into etraut/next-turn-state-remove-override-context 2026-05-16 17:42:40 -07:00
Eric Traut
db6e9bfaa9 Merge branch 'etraut/next-turn-state-remove-user-input-with-context' into etraut/next-turn-state-input-op-consolidation 2026-05-16 17:42:27 -07:00
Eric Traut
cd69441b5b Simplify turn start context overrides 2026-05-16 17:42:10 -07:00
Eric Traut
a5f2e7f68f Merge branch 'etraut/next-turn-state-input-op-consolidation' into etraut/next-turn-state-remove-override-context 2026-05-16 17:39:28 -07:00
Eric Traut
9d5a0e2b5d Trim redundant turn context defaults 2026-05-16 17:39:09 -07:00
Eric Traut
d2b614b545 Merge branch 'etraut/next-turn-state-core' into etraut/next-turn-state-app-server 2026-05-16 17:27:34 -07:00
Eric Traut
b2445a9bcc Merge branch 'etraut/next-turn-state-remove-override-context' into etraut/next-turn-state-core 2026-05-16 17:27:17 -07:00
Eric Traut
532a6d07bb Merge branch 'etraut/next-turn-state-input-op-consolidation' into etraut/next-turn-state-remove-override-context 2026-05-16 17:27:02 -07:00
Eric Traut
8f6825e572 Merge branch 'etraut/next-turn-state-remove-user-input-with-context' into etraut/next-turn-state-input-op-consolidation 2026-05-16 17:26:53 -07:00
Eric Traut
73ad0c2463 Merge branch 'etraut/next-turn-state-user-input-context' into etraut/next-turn-state-remove-user-input-with-context
# Conflicts:
#	codex-rs/core/src/session/handlers.rs
2026-05-16 17:26:44 -07:00
Eric Traut
c6fe81d803 Simplify turn context update handling 2026-05-16 17:23:39 -07:00
Eric Traut
f5943e0fd9 Merge remote-tracking branch 'origin/main' into etraut/next-turn-state-user-input-context 2026-05-16 17:21:08 -07:00
Eric Traut
579abe122b Fix turn context update ordering 2026-05-16 17:07:08 -07:00
Eric Traut
9af52a593b Merge branch 'etraut/next-turn-state-core' into etraut/next-turn-state-app-server 2026-05-16 16:00:50 -07:00
Eric Traut
a31c4cd218 Merge branch 'etraut/next-turn-state-remove-override-context' into etraut/next-turn-state-core
# Conflicts:
#	codex-rs/core/src/codex_thread.rs
2026-05-16 16:00:41 -07:00
Eric Traut
5b47db287d Fix OverrideTurnContext removal split 2026-05-16 16:00:11 -07:00
Eric Traut
f3703798ee Merge branch 'etraut/next-turn-state-core' into etraut/next-turn-state-app-server 2026-05-16 15:49:24 -07:00
Eric Traut
9393c2647b Add queued core turn context op 2026-05-16 15:49:05 -07:00
Eric Traut
875b846721 Remove core OverrideTurnContext op 2026-05-16 15:47:40 -07:00
Eric Traut
e3bb6dad55 Merge branch 'etraut/next-turn-state-core' into etraut/next-turn-state-app-server 2026-05-16 14:43:58 -07:00
Eric Traut
b2fa7ac1d0 Document direct turn context override ordering 2026-05-16 14:43:36 -07:00
Eric Traut
0445b290fe [1 of 4] tui: route primary settings writes through app server (#22913)
## Why
The TUI can run against a remote app server, but several high-traffic
settings still persisted by editing the local config file. That sends
remote sessions' preference writes to the wrong machine and lets local
disk state drift from the app-server-owned config.

This is **[1 of 4]** in a stacked series that moves TUI-owned config
mutations onto app-server APIs.

## What changed
- Added a small TUI helper for typed app-server config writes.
- Routed primary interactive preference writes through
`config/batchWrite`.
- Preserved existing profile scoping for settings that already support
`profiles.<profile>.*` overrides.

## Config keys affected
- `model`
- `model_reasoning_effort`
- `personality`
- `service_tier`
- `plan_mode_reasoning_effort`
- `approvals_reviewer`
- `notice.fast_default_opt_out`
- Profile-scoped equivalents under `profiles.<profile>.*`

## Suggested manual validation
- Connect the TUI to a remote app server, change `model` and
`model_reasoning_effort`, reconnect, and confirm the remote config
retained both values while the local `config.toml` did not change.
- Change `personality`, `plan_mode_reasoning_effort`, and the explicit
auto-review selection, then reconnect and confirm those choices persist
through the app server.
- Clear the service tier back to default and confirm `service_tier` is
cleared while `notice.fast_default_opt_out = true` is persisted
remotely.
- Repeat one setting change with an active profile and confirm the write
lands under `profiles.<profile>.*`.

## Stack
1. [#22913](https://github.com/openai/codex/pull/22913) `[1 of 4]`
primary settings writes
2. [#22914](https://github.com/openai/codex/pull/22914) `[2 of 4]` app
and skill enablement
3. [#22915](https://github.com/openai/codex/pull/22915) `[3 of 4]`
feature and memory toggles
4. [#22916](https://github.com/openai/codex/pull/22916) `[4 of 4]`
startup and onboarding bookkeeping
2026-05-16 14:27:02 -07:00
Eric Traut
49bcf51b7f Merge branch 'etraut/next-turn-state-core' into etraut/next-turn-state-app-server
# Conflicts:
#	codex-rs/app-server/src/request_processors/turn_processor.rs
2026-05-16 14:22:05 -07:00
Eric Traut
1320847a37 Merge branch 'etraut/next-turn-state-input-op-consolidation' into etraut/next-turn-state-core 2026-05-16 14:21:21 -07:00
Eric Traut
1c10a91853 Merge branch 'etraut/next-turn-state-remove-user-input-with-context' into etraut/next-turn-state-input-op-consolidation
# Conflicts:
#	codex-rs/app-server/src/request_processors/turn_processor.rs
#	codex-rs/core/src/session/handlers.rs
#	codex-rs/protocol/src/protocol.rs
2026-05-16 14:21:06 -07:00
Eric Traut
cb528adace Remove UserInputWithTurnContext op 2026-05-16 14:20:00 -07:00
Eric Traut
3b1b54ace7 Add turn context to UserInput 2026-05-16 14:16:20 -07:00
Eric Traut
6e0bf085f3 Merge branch 'etraut/next-turn-state-core' into etraut/next-turn-state-app-server 2026-05-16 13:51:38 -07:00
Eric Traut
745fb81766 Merge branch 'etraut/next-turn-state-input-op-consolidation' into etraut/next-turn-state-core 2026-05-16 13:51:28 -07:00
Eric Traut
e1b60da6fc Fix clippy field shorthand in core tests 2026-05-16 13:51:13 -07:00
sayan-oai
061a614d85 multiagent: trim model-visible description, cap to 5 models (#23069)
## Why

The `spawn_agent` model override guidance is uncapped and bloating
context. We need to trim down each entry and cap total entries.

picked 5 as cap, we can change

## What changed

- Cap the model override summaries shown in `spawn_agent` to the first 5
picker-visible models, preserving the existing priority ordering from
the models manager.
- Condense each rendered entry to the actionable pieces the model needs:
  - use the model slug as the label
  - render compact reasoning effort lists with the default marked inline
- render only service tier IDs, and omit the clause when no tiers are
available
- Update coverage so the compact formatter shape and the top-5 cap are
exercised, and keep the end-to-end request assertion aligned with real
model metadata.

## Example

Before:

`- gpt-5.4 ('gpt-5.4\'): Strong model for everyday coding. Default
reasoning effort: medium. Supported reasoning efforts: low (Fast
responses with lighter reasoning), medium (Balances speed and reasoning
depth for everyday tasks), high (Greater reasoning depth for complex
problems), xhigh (Extra high reasoning depth for complex problems).
Supported service tiers: priority (Fast: 1.5x speed, increased usage).`

After:

`- 'gpt-5.4': Strong model for everyday coding. Reasoning efforts: low,
medium (default), high, xhigh. Service tiers: priority.`
2026-05-16 13:43:30 -07:00
Eric Traut
744ed740f1 Merge branch 'etraut/next-turn-state-core' into etraut/next-turn-state-app-server
# Conflicts:
#	codex-rs/app-server/src/request_processors.rs
#	codex-rs/app-server/src/request_processors/turn_processor.rs
2026-05-16 13:31:59 -07:00
Eric Traut
e3d8a8e412 Merge branch 'etraut/next-turn-state-input-op-consolidation' into etraut/next-turn-state-core
# Conflicts:
#	codex-rs/app-server/src/request_processors/turn_processor.rs
#	codex-rs/core/src/session/handlers.rs
#	codex-rs/core/src/session/tests.rs
#	codex-rs/protocol/src/protocol.rs
2026-05-16 13:28:33 -07:00
Miaolin Min
6941f5c2c5 [codex] preserve MCP result meta in McpToolCallItemResult (#22946)
## Summary

https://openai.slack.com/archives/C0ARA9UAQEA/p1778890981647319?thread_ts=1778888537.934319&cid=C0ARA9UAQEA


- Add `_meta` to exec JSONL MCP tool call result events.
- Copy MCP result metadata through the JSONL event conversion.
- Add a focused test that verifies `_meta` is serialized as `_meta` and
not `meta`.


## Verification

https://www.notion.so/openai/Miaolin-0516-_meta-population-debug-3628e50b62b08074b365e0ce1ffb8f74
2026-05-16 13:27:44 -07:00
Eric Traut
30f6ab2372 Consolidate core input ops 2026-05-16 13:19:04 -07:00
Michael Zeng
b200dd1b6f exec-server: support auth-backed remote executor registration (#22769)
This updates remote `exec-server` registration to use normal Codex auth
instead of a registry-issued credential. The registry request is built
from the existing auth-provider path, which preserves the biscuit-only
registry contract introduced in
[openai/openai#924101](https://github.com/openai/openai/pull/924101)
while removing the old remote registry bearer env var and its direct
transport assumptions.

The default remote flow uses persisted ChatGPT auth from the normal
Codex config/storage path. This PR also includes the containerized Agent
Identity path needed by
[openai/openai#924260](https://github.com/openai/openai/pull/924260):
remote `exec-server` accepts `--allow-agent-identity-auth`, permits
Agent Identity auth loaded from `CODEX_ACCESS_TOKEN` only when that flag
is present, and reuses the existing Agent task registration plus derived
`AgentAssertion` header generation. API-key auth remains unsupported,
and Agent Identity stays opt-in.

Validation performed beyond normal presubmit coverage:
- `cargo fmt --all --check`
- `cargo check -p codex-cli`
- `cargo test -p codex-exec-server`
- `cargo test -p codex-cli exec_server_agent_identity_auth_flag_`
- `cargo test -p codex-cli remote_exec_server_auth_mode_`

I also attempted `cargo test -p codex-cli`. The new CLI tests passed
inside that run, but the suite ended on an unrelated local
marketplace-state failure in
`plugin_list_excludes_unconfigured_repo_local_marketplaces`.
2026-05-16 12:48:28 -07:00
Eric Traut
95307a58ca Merge branch 'etraut/next-turn-state-core' into etraut/next-turn-state-app-server
# Conflicts:
#	codex-rs/app-server/README.md
#	codex-rs/app-server/src/request_processors.rs
#	codex-rs/app-server/src/request_processors/turn_processor.rs
2026-05-16 12:35:41 -07:00
Eric Traut
34263f13ca Merge remote-tracking branch 'origin/main' into etraut/next-turn-state-core
# Conflicts:
#	codex-rs/core/src/session/handlers.rs
#	codex-rs/core/src/session/tests.rs
#	codex-rs/protocol/src/protocol.rs
2026-05-16 12:29:40 -07:00
Michael Bolin
d91bc15618 test: construct permission profiles directly (#23030)
## Why

`SandboxPolicy` is now a legacy compatibility shape, but several tests
still built a `SandboxPolicy` only to immediately convert it into
`PermissionProfile` for APIs that already accept canonical runtime
permissions. Those detours make it harder to audit where legacy sandbox
policy is still required, because boundary-only usages are mixed
together with ordinary test setup.

## What Changed

- Updated tests in `codex-core`, `codex-exec`, `codex-analytics`, and
`codex-config` to construct `PermissionProfile` values directly when the
code under test takes a permission profile.
- Changed exec-policy, request-permissions, session, and sandbox test
helpers to pass `PermissionProfile` through instead of converting from
`SandboxPolicy` internally.
- Left `SandboxPolicy` in place where tests are explicitly exercising
legacy compatibility or request/response boundaries.

## Test Plan

- `cargo test -p codex-analytics -p codex-config`
- `cargo test -p codex-core --lib safety::tests`
- `cargo test -p codex-core --lib exec_policy::tests::`
- `cargo test -p codex-core --lib exec::tests`
- `cargo test -p codex-core --lib guardian_review_session_config`
- `cargo test -p codex-core --lib tools::network_approval::tests`
- `cargo test -p codex-core --lib
tools::runtimes::shell::unix_escalation::tests`
- `cargo test -p codex-core --lib managed_network`
- `cargo test -p codex-core --test all request_permissions::`
- `cargo test -p codex-exec sandbox`


---
[//]: # (BEGIN SAPLING FOOTER)
Stack created with [Sapling](https://sapling-scm.com). Best reviewed
with [ReviewStack](https://reviewstack.dev/openai/codex/pull/23030).
* #23036
* __->__ #23030
2026-05-16 12:12:37 -07:00
Eric Traut
941e7f825e Improve goal completion usage reporting (#22907)
## Why

Goal completion follow-up turns currently receive a preformatted English
usage sentence such as `time used: 2586 seconds`. That nudges the model
to echo an awkward raw seconds count in the final reply, even though the
tool result already exposes structured usage fields like
`goal.timeUsedSeconds`, `goal.tokensUsed`, and `goal.tokenBudget`.

## What changed

- Replace the preformatted completion usage sentence with guidance to
read the structured goal fields from the tool result.
- Preserve token-budget reporting while allowing the model to phrase
elapsed time in a concise, human-friendly way that fits the response
language.
- Update core coverage for both the generated completion guidance and
the session flow that forwards it back to the model.

## Verification

Previously, it would have output a final message indicating that it
"worked for 303 seconds". Now it shows the following:

<img width="286" height="35" alt="image"
src="https://github.com/user-attachments/assets/d7011880-9449-46a7-856f-4e50ae00eb45"
/>
2026-05-16 11:49:40 -07:00
Ahmed Ibrahim
a280248021 [codex] Split Python SDK helper logic (#22939)
## Summary
- Move approval-mode mapping into
`sdk/python/src/openai_codex/_approval_mode.py`.
- Move initialize metadata parsing and normalization into
`sdk/python/src/openai_codex/_initialize_metadata.py`.
- Keep the public `ApprovalMode` export stable and retarget direct
metadata helper coverage.

## Integration coverage
- Add an app-server harness smoke that exercises sync and async SDK
initialization plus thread creation.

## Validation
- Local tests were not run per repo guidance. CI should validate this
branch once the PR is online.
2026-05-16 09:47:51 -07:00