Commit Graph
3945 Commits
Author SHA1 Message Date
Michael Bolin 37d1d8d901 merge commit for archive created by Sapling 2025-09-25 22:28:42 -07:00
Michael Bolin 48822d19bf feat: introduce responses-api-proxy 2025-09-25 22:28:35 -07:00
Michael Bolin 15da38660d Merge 97d4ac4c11 into sapling-pr-archive-bolinfest 2025-09-25 16:43:41 -07:00
Michael Bolin 97d4ac4c11 feat: introduce responses-api-proxy 2025-09-25 16:43:38 -07:00
Michael Bolin 5fa61a5969 merge commit for archive created by Sapling 2025-09-25 16:41:15 -07:00
Michael Bolin 4bc5389c28 feat: introduce responses-api-proxy 2025-09-25 16:40:24 -07:00
Michael Bolin b9a73c3617 merge commit for archive created by Sapling 2025-09-25 16:25:50 -07:00
Michael Bolin 2ea027f55f feat: introduce responses-api-proxy 2025-09-25 16:25:44 -07:00
Michael Bolin a0b2bafb68 merge commit for archive created by Sapling 2025-09-25 15:59:30 -07:00
Michael Bolin 4b50983b5d feat: introduce responses-api-proxy 2025-09-25 15:59:07 -07:00
Michael Bolin 53fdaceb28 merge commit for archive created by Sapling 2025-09-25 15:34:57 -07:00
Michael Bolin 03889eaf91 feat: introduce responses-api-proxy 2025-09-25 15:34:42 -07:00
Michael Bolin 5ffa699866 merge commit for archive created by Sapling 2025-09-25 13:28:53 -07:00
Michael Bolin 5c39f91f04 feat: introduce responses-api-proxy 2025-09-25 13:28:43 -07:00
Michael Bolin ded6672ae6 feat: remove OPENAI_API_KEY from env and mlock if set 2025-09-25 13:28:43 -07:00
Michael Bolin 81362c2574 merge commit for archive created by Sapling 2025-09-25 13:10:07 -07:00
Michael Bolin 7d10a85901 feat: introduce responses-api-proxy 2025-09-25 13:09:53 -07:00
Michael Bolin 92e8631cde feat: remove OPENAI_API_KEY from env and mlock if set 2025-09-25 13:07:32 -07:00
Michael Bolin 4816b8d921 merge commit for archive created by Sapling 2025-09-25 12:24:48 -07:00
Michael Bolin adab50b9ac feat: remove OPENAI_API_KEY from env and mlock if set 2025-09-25 12:24:38 -07:00
Michael Bolin 835f571d53 Merge 4670b0c561 into sapling-pr-archive-bolinfest 2025-09-25 12:13:58 -07:00
Michael Bolin 4670b0c561 feat: remove OPENAI_API_KEY from env and mlock if set 2025-09-25 12:13:50 -07:00
Michael Bolin fad5a3792c merge commit for archive created by Sapling 2025-09-25 10:13:02 -07:00
Michael Bolin 3fbf9996f1 chore: refactor attempt_stream_responses() out of stream_responses() 2025-09-25 10:12:55 -07:00
Jeremy Rose 103adcdf2d fix: esc w/ queued messages overwrites draft in composer (#4237)
Instead of overwriting the contents of the composer when pressing
<kbd>Esc</kbd> when there's a queued message, prepend the queued
message(s) to the composer draft.
2025-09-25 10:07:27 -07:00
Michael Bolin d61dea6fe6 feat: add support for CODEX_SECURE_MODE=1 to restrict process observability (#4220)
Because the `codex` process could contain sensitive information in
memory, such as API keys, we add logic so that when
`CODEX_SECURE_MODE=1` is specified, we avail ourselves of whatever the
operating system provides to restrict observability/tampering, which
includes:

- disabling `ptrace(2)`, so it is not possible to attach to the process
with a debugger, such as `gdb`
- disabling core dumps

Admittedly, a user with root privileges can defeat these safeguards.

For now, we only add support for this in the `codex` multitool, but we
may ultimately want to support this in some of the smaller CLIs that are
buildable out of our Cargo workspace.
2025-09-25 10:02:28 -07:00
Michael Bolin 55787ccfaa Merge 6587f82484 into sapling-pr-archive-bolinfest 2025-09-25 09:37:49 -07:00
Michael Bolin 6587f82484 chore: refactor attempt_stream_responses() out of stream_responses() 2025-09-25 09:37:41 -07:00
Michael Bolin 375c2638fd merge commit for archive created by Sapling 2025-09-25 09:25:48 -07:00
Michael Bolin 8bdb940340 feat: add support for CODEX_SECURE_MODE=1 to restrict process observability 2025-09-25 09:25:41 -07:00
Michael Bolin 1c9284fc39 merge commit for archive created by Sapling 2025-09-25 09:18:39 -07:00
Michael Bolin 943b8af3b7 feat: add support for CODEX_SECURE_MODE=1 to restrict process observability 2025-09-25 09:18:34 -07:00
Michael Bolin abf89d2293 merge commit for archive created by Sapling 2025-09-25 09:17:49 -07:00
Michael Bolin 9415870df6 feat: add support for CODEX_SECURE_MODE=1 to restrict process observability 2025-09-25 09:17:43 -07:00
Michael Bolin f83923be42 merge commit for archive created by Sapling 2025-09-25 09:14:22 -07:00
Michael Bolin 6590790931 feat: add support for CODEX_SECURE_MODE=1 to restrict process observability 2025-09-25 09:14:16 -07:00
Michael Bolin 38f6272639 merge commit for archive created by Sapling 2025-09-25 08:52:17 -07:00
Michael Bolin 948aaa703d feat: add support for CODEX_SECURE_MODE=1 to restrict process observability 2025-09-25 08:52:08 -07:00
Ahmed Ibrahim e363dac249 revamp /status (#4196)
<img width="543" height="520" alt="image"
src="https://github.com/user-attachments/assets/bbc0eec0-e40b-45e7-bcd0-a997f8eeffa2"
/>
2025-09-25 15:38:50 +00:00
jif-oai 250b244ab4 ref: full state refactor (#4174)
## Current State Observations
- `Session` currently holds many unrelated responsibilities (history,
approval queues, task handles, rollout recorder, shell discovery, token
tracking, etc.), making it hard to reason about ownership and lifetimes.
- The anonymous `State` struct inside `codex.rs` mixes session-long data
with turn-scoped queues and approval bookkeeping.
- Turn execution (`run_task`) relies on ad-hoc local variables that
should conceptually belong to a per-turn state object.
- External modules (`codex::compact`, tests) frequently poke the raw
`Session.state` mutex, which couples them to implementation details.
- Interrupts, approvals, and rollout persistence all have bespoke
cleanup paths, contributing to subtle bugs when a turn is aborted
mid-flight.

## Desired End State
- Keep a slim `Session` object that acts as the orchestrator and façade.
It should expose a focused API (submit, approvals, interrupts, event
emission) without storing unrelated fields directly.
- Introduce a `state` module that encapsulates all mutable data
structures:
- `SessionState`: session-persistent data (history, approved commands,
token/rate-limit info, maybe user preferences).
- `ActiveTurn`: metadata for the currently running turn (sub-id, task
kind, abort handle) and an `Arc<TurnState>`.
- `TurnState`: all turn-scoped pieces (pending inputs, approval waiters,
diff tracker, review history, auto-compact flags, last agent message,
outstanding tool call bookkeeping).
- Group long-lived helpers/managers into a dedicated `SessionServices`
struct so `Session` does not accumulate "random" fields.
- Provide clear, lock-safe APIs so other modules never touch raw
mutexes.
- Ensure every turn creates/drops a `TurnState` and that
interrupts/finishes delegate cleanup to it.
2025-09-25 12:16:06 +02:00
Michael Bolin 5e3ba737cc merge commit for archive created by Sapling 2025-09-25 00:44:56 -07:00
Michael Bolin f3615680cc feat: add support for CODEX_SECURE_MODE=1 to restrict process observability 2025-09-25 00:44:51 -07:00
Michael Bolin da9d9fa328 merge commit for archive created by Sapling 2025-09-25 00:39:50 -07:00
Michael Bolin 1470e85b5b feat: add support for CODEX_SECURE_MODE=1 to restrict process observability 2025-09-25 00:39:43 -07:00
Michael Bolin 592662ea38 Merge e5594b1680 into sapling-pr-archive-bolinfest 2025-09-25 00:26:46 -07:00
Michael Bolin e5594b1680 feat: add support for CODEX_SECURE_MODE=1 to restrict process observability 2025-09-25 00:25:38 -07:00
pakrym-oai d1ed3a4cef github: update codespell action to v2.1 in workflow (#4205)
Old version fails to find python 3.8 docker image
2025-09-25 04:05:00 +00:00
pakrym-oai e85742635f Send text parameter for non-gpt-5 models (#4195)
We had a hardcoded check for gpt-5 before.

Fixes: https://github.com/openai/codex/issues/4181
2025-09-24 22:00:06 +00:00
Michael Bolin de7158cc75 Merge 49f836ea86 into sapling-pr-archive-bolinfest 2025-09-24 14:31:46 -07:00
Michael Bolin 49f836ea86 chore: refactor attempt_stream_responses() out of stream_responses() 2025-09-24 14:31:38 -07:00