Commit Graph
18127 Commits
Author SHA1 Message Date
Michael Bolin 83044192b8 Merge 64280aa283 into sapling-pr-archive-bolinfest 2026-07-01 17:08:45 -07:00
Michael Bolin 64280aa283 Log multi-agent communication lifecycle 2026-07-01 17:08:27 -07:00
Michael Bolin a98a21798c Consolidate multi-agent v2 communication sends (#30867)
## Why

Multi-agent v2 communications currently use separate outbound paths:
direct messages, follow-up tasks, and completion results go through
`send_inter_agent_communication`, while a spawn's initial message goes
through the generic input submission path. That split makes it difficult
to add complete communication lifecycle logging in one place.

This refactor makes `submit_inter_agent_communication` the common sink
for those paths, preparing the follow-up observability work discussed in
[#30516](https://github.com/openai/codex/pull/30516).

## What changed

- Routed all current outbound `InterAgentCommunication` paths in
`AgentControl`—direct messages, follow-up tasks, completion results, and
multi-agent v2 spawn initial messages—through
`submit_inter_agent_communication`.
- Centralized the actual submission and last-task-message bookkeeping
there, providing one place for the follow-up PR to instrument
communication creation and successful enqueue.
- Left non-communication input handling and the multi-agent v1 spawn
flow unchanged.

## Testing

- `just test -p codex-core 'agent::control::tests::'` (51 passed)
- `just test -p codex-core
'suite::subagent_notifications::encrypted_multi_agent_v2_spawn_sends_agent_message_to_child'`
(passed)








---
[//]: # (BEGIN SAPLING FOOTER)
Stack created with [Sapling](https://sapling-scm.com). Best reviewed
with [ReviewStack](https://reviewstack.dev/openai/codex/pull/30867).
* #30872
* __->__ #30867
2026-07-01 17:08:11 -07:00
Michael Bolin 9b09317904 merge commit for archive created by Sapling 2026-07-01 16:36:30 -07:00
Michael Bolin 82ed1d2426 Log multi-agent communication lifecycle 2026-07-01 16:36:21 -07:00
Michael Bolin 9268f6b90e merge commit for archive created by Sapling 2026-07-01 16:11:24 -07:00
Michael Bolin 7f74f9a2e2 Log multi-agent communication lifecycle 2026-07-01 16:11:16 -07:00
Michael Bolin b2eae13726 merge commit for archive created by Sapling 2026-07-01 16:02:45 -07:00
Michael Bolin 2952ea8610 Log multi-agent communication lifecycle 2026-07-01 16:02:37 -07:00
Michael Bolin 6327da10ce merge commit for archive created by Sapling 2026-07-01 15:56:24 -07:00
Michael Bolin 15fafe38fe Log multi-agent communication lifecycle 2026-07-01 15:56:15 -07:00
Michael Bolin 9fca82fb6e Merge 81c79f11b8 into sapling-pr-archive-bolinfest 2026-07-01 15:52:46 -07:00
Michael Bolin 81c79f11b8 Log multi-agent communication lifecycle 2026-07-01 15:52:28 -07:00
Michael Bolin fa926ef695 merge commit for archive created by Sapling 2026-07-01 15:51:41 -07:00
Michael Bolin eab365453d Log multi-agent communication lifecycle 2026-07-01 15:51:22 -07:00
Michael Bolin 6eed12cd67 merge commit for archive created by Sapling 2026-07-01 15:31:48 -07:00
Michael Bolin 425acfd752 Log multi-agent communication lifecycle 2026-07-01 15:31:35 -07:00
Michael Bolin 8fdb295c87 Merge a02b5c5627 into sapling-pr-archive-bolinfest 2026-07-01 15:09:12 -07:00
Michael Bolin a02b5c5627 Log multi-agent communication lifecycle 2026-07-01 15:08:50 -07:00
Michael Bolin c27ad497d3 merge commit for archive created by Sapling 2026-07-01 14:27:05 -07:00
Michael Bolin f6dcc0e68b Consolidate multi-agent v2 communication sends 2026-07-01 14:26:56 -07:00
Michael Bolin c75d0fd58e merge commit for archive created by Sapling 2026-07-01 14:17:59 -07:00
Michael Bolin 88aee5b579 Consolidate multi-agent v2 communication sends 2026-07-01 14:17:46 -07:00
richardopenai 042e61726d [codex] bound Rendezvous WebSocket liveness (#30643)
## Summary

- require a Pong within 60 seconds for established Noise Rendezvous
WebSockets on both the harness and executor
- bound steady-state WebSocket writes and harness event delivery so
backpressure cannot mask the deadline
- classify executor disconnects with bounded reasons and feed them into
the existing reconnect metric and structured log
- cover silent peers, responsive peers, continuous non-Pong traffic, and
local application backpressure

## Why

The existing periodic Pings did not track Pongs, so a half-open or
blackholed connection could remain stuck until the operating system's
TCP timeout. This adds the smallest explicit liveness contract without
new spans, RTT histograms, feature flags, or TCP diagnostics.

## Testing

- `just test -p codex-exec-server` on devbox `richard-6` — 300 passed, 2
skipped
- `just fix -p codex-exec-server`
- `just fmt`
- independent correctness, performance/security, and YAGNI reviews — no
findings
2026-07-01 14:15:34 -07:00
Michael Bolin 164a107bb7 merge commit for archive created by Sapling 2026-07-01 14:09:14 -07:00
Michael Bolin 4862e6254f Consolidate multi-agent v2 communication sends 2026-07-01 14:09:02 -07:00
Michael Bolin 749dfd6a93 merge commit for archive created by Sapling 2026-07-01 14:03:32 -07:00
Michael Bolin bc305225e9 Consolidate multi-agent v2 communication sends 2026-07-01 14:03:21 -07:00
Michael Bolin 96646dc647 Merge b1d06b8c05 into sapling-pr-archive-bolinfest 2026-07-01 13:53:46 -07:00
Michael Bolin b1d06b8c05 Consolidate multi-agent v2 communication sends 2026-07-01 13:53:22 -07:00
Michael Bolin d059658ad1 docs: add tag to fenced code block (#30851)
Now consistent with the other examples and the syntax highlighting is
improved.
2026-07-01 10:59:02 -07:00
Michael Bolin a37c19268d Merge 20b5c92efe into sapling-pr-archive-bolinfest 2026-07-01 10:58:15 -07:00
Michael Bolin 20b5c92efe docs: add tag to fenced code block 2026-07-01 10:58:06 -07:00
Michael Bolin c9a9a79aff Merge 6d40797232 into sapling-pr-archive-bolinfest 2026-07-01 10:54:43 -07:00
Michael Bolin 6d40797232 feat: support permissions-scoped exec rules 2026-07-01 10:54:33 -07:00
Dylan Hurd db887d03e1 fix(core) Remove full text websocket trace (#30757)
## Summary
This is a follow-up to https://github.com/openai/codex/pull/29432 to
remove one additional trace statement that is not being filtered by
https://github.com/openai/codex/pull/29457.


## Testing
- [x] Unit tests pass
2026-06-30 21:18:22 +00:00
Eric Traut 020828170f [codex] Update safety notice wording (#30645)
## Summary

The TUI biosafety block still included obsolete copy telling approved
researchers they may be able to apply for Trusted Access.

Remove that sentence and update the UI snapshot to match the approved
wording.
2026-06-30 09:31:06 -07:00
richardopenai cfead68e5d [codex] disable Nagle on Rendezvous WebSockets (#30269)
## Summary

Disable Nagle unconditionally for both exec-server Rendezvous WebSocket
connections.

- pass `disable_nagle=true` at the executor and harness connection call
sites
- keep the existing signed URL, protocol, and connection flow unchanged
- add no feature flag, rollout schema, path variant, or
experiment-specific telemetry

The companion internal PR enables `TCP_NODELAY` on accepted Rendezvous
sockets: https://github.com/openai/openai/pull/1082463

## Why

Rendezvous carries small, latency-sensitive relay and JSON-RPC frames.
Three staging runs of 30 steady-state `process/read` calls per
configuration measured p50 improving from 139.1 ms to 81.5 ms and p95
from 162.0 ms to 95.8 ms with Nagle disabled.

The expected packet overhead is small at the current connection scale.
We will use existing latency, error, packet, and CPU monitoring and
revert normally if production regresses.

## Rollout and rollback

The client and accepted-socket changes can deploy independently. New
connections receive the setting as each side deploys. Rollback is a
normal code revert; there is no persisted assignment or gate state to
unwind.

## Validation

- `just test -p codex-exec-server --lib`: 164 passed
- `just fix -p codex-exec-server`: passed
- `just fmt`: passed
- independent final review found no actionable issue
2026-06-29 19:14:47 -05:00
Michael Bolin ce5a5b95b0 Merge 07a498e102 into sapling-pr-archive-bolinfest 2026-06-29 11:37:35 -07:00
Michael Bolin 07a498e102 app-server: bound client requests by their total deadline 2026-06-29 11:37:17 -07:00
Eric Traut 4808c162ee [codex] auto-label AWS Bedrock issues (#30607)
## Summary

AWS Bedrock issues currently fall under broader labels, which makes
provider-specific reports harder to find. The issue tracker now has an
`aws-bedrock` label, but the automated labeler does not know to apply
it.

Teach the issue labeler to select `aws-bedrock` for Amazon Bedrock
provider or Bedrock Mantle issues while excluding generic AWS
references.
2026-06-29 11:10:38 -07:00
Eric Traut 9d13291955 Update safety check links (#30491)
## Summary

Bio/Cyber safety surfaces in the TUI could send users to stale Trusted
Access pages, and safety buffering did not always expose the Help
Center.

This follow-up to #30317 adds the missing Learn more action, refreshes
the Bio access URL and block copy, and updates the affected snapshots
while preserving the existing retry and wait behavior.
2026-06-29 11:10:11 -07:00
Shijie Rao 80f54d1266 [codex] Treat max as a first-class reasoning effort (#30467)
## Why

The Bedrock GPT-5.6 catalog advertises `max`, but Codex treated it as an
opaque custom effort. That made the reasoning picker render it as
lowercase `max` while known efforts use productized labels.

Making `max` a known effort aligns catalog data, parsing, and UI
presentation without changing the `max` wire value or persisted
representation.

## What changed

- Add first-class `ReasoningEffort::Max` parsing and serialization.
- Use the typed effort in the Bedrock catalog and render it as `Max` in
the TUI.
- Preserve forward-compatible custom-effort coverage with a genuinely
unknown `future` value.

### Before
<img width="559" height="124" alt="Screenshot 2026-06-28 at 12 08 47 PM"
src="https://github.com/user-attachments/assets/7c43cf4f-020b-4605-9239-0a9c97eb7364"
/>

### After
<img width="558" height="107" alt="Screenshot 2026-06-28 at 12 09 10 PM"
src="https://github.com/user-attachments/assets/b9cc5ded-c940-43b4-b024-bba25abe0a17"
/>
2026-06-29 09:38:49 -07:00
Dylan Hurd ccdfb4f342 Revert "Make auto-review on-request prompt more proactive" (#30508)
Reverts openai/codex#26496
2026-06-28 20:40:55 -07:00
Ahmed Ibrahim 8dac605901 [codex] Restore v1 delegation guidance (#30511)
## Summary

- restore the v1 clarification that requests for depth, research, or
investigation do not authorize subagent spawning
- restore guidance for keeping critical-path, urgent, tightly coupled,
or difficult work local
- update the focused v1 tool-search and spawn-description coverage

## Why

PR #27919 simplified the v1 `spawn_agent` prompt by removing its
delegation decision guidance. That left the authorization rule intact,
but removed the instructions that constrained what should be delegated
after spawning was authorized.

Restore those guardrails while preserving later support for explicit
delegation authorization from applicable AGENTS.md and skill
instructions. Multi-agent v2 prompts are unchanged.

## User impact

Models using the v1 multi-agent tool surface receive clearer guidance to
delegate independent side work while keeping blocking work on the main
rollout.

## Validation

- `just fmt`
- `git diff --check`
- tests not run locally per repository guidance; CI will validate the
focused coverage
2026-06-28 20:34:47 -07:00
ani-oai 6b5f5743b3 [codex] Use model metadata for skills usage instructions (#29740)
## Summary

- add a false-by-default `include_skills_usage_instructions` model
metadata field
- enable the field for the bundled `gpt-5.5` model metadata
- consume the metadata in both core and extension skill rendering
- remove hardcoded legacy-model matching and its marker plumbing
2026-06-29 09:44:36 +09:00
Felipe Coury 850da19dc4 fix(tui): clear completed safety buffering prompt (#30490)
## Why

The safety-buffering prompt is a modal TUI view, but the normal
successful-turn path only hid the running status indicator. If the turn
completed while the prompt was open, the stale modal remained over the
composer until the user dismissed it or another turn started.

This aligns the TUI with the app behavior: keep the safety notice
visible while the turn is active, then remove it when the turn becomes
terminal. It also prevents the stale retry action from changing the
model and reasoning effort for a future turn after the buffered turn has
already completed.

| New copy |
|---|
| <img width="1014" height="313" alt="CleanShot 2026-06-28 at 20 27 18"
src="https://github.com/user-attachments/assets/f0f37359-5d77-442f-add2-9d1874bdc422"
/> |

## What changed

- Clear the active safety-buffering view and retry state when a turn
completes successfully.
- Update the retry-capable message to say “Hang tight or retry with a
faster model”.
- Extend the safety-buffering regression coverage to verify that the
prompt remains visible after assistant output starts and disappears when
the turn completes.
- Update the TUI snapshot for the revised copy.

This is a follow-up to #29919.

## How to Test

1. Start a TUI turn that receives `model/safetyBuffering/updated` with
`showBufferingUi: true` and a `fasterModel`.
2. Confirm the prompt says “Hang tight or retry with a faster model”.
3. Let the turn continue and confirm the prompt remains visible while
the turn is active.
4. Let the turn finish successfully and confirm the prompt disappears
and the composer is restored without requiring an extra keypress.
5. Confirm a buffering update without a faster model still shows the
shorter non-retry message.

Targeted automated coverage:

- `just test -p codex-tui safety_buffering` — 4 passed.
- `just test -p codex-tui` — 2,951 passed; two unrelated Guardian
feature-flag tests failed identically on `main` in this environment.

The argument-comment lint was also audited manually. The workspace Bazel
invocation was blocked by a missing external LLVM `compiler-rt` BUILD
file, and the packaged per-crate fallback uses a nightly older than the
current `sqlx` minimum Rust version.
2026-06-28 20:55:53 -03:00
xl-openai e428a12d22 [codex] Enable remote plugins by default (#30297)
## Summary

- enable the remote plugin feature by default
- promote the remote plugin feature from under development to stable
- preserve the existing `features.remote_plugin` override for explicitly
disabling it
- keep legacy disabled-path coverage explicit in TUI and app-server
tests

## Impact

Remote plugin functionality is enabled by default for configurations
that do not set the feature flag. The existing Codex backend
authentication gate still applies.

## Validation

- `just fmt`
- `just test -p codex-features`
- `just test -p codex-tui
plugins_popup_remote_section_fallback_states_snapshot`
- targeted `codex-app-server` plugin-list and skills-list tests
- `git diff --check`

The full TUI and app-server suites were also exercised locally. All
remote-plugin-related coverage passed; unrelated local
sandbox/test-binary failures remain outside this change.
2026-06-28 11:46:25 -07:00
Michael Bolin 51d6b4ff59 merge commit for archive created by Sapling 2026-06-27 17:58:59 -07:00
Michael Bolin e9a26a3871 telemetry: log structured tool timing events 2026-06-27 17:58:30 -07:00