openai / openai/codex

Realtime voice sessions do not receive AGENTS.md / Personality instructions that text sessions do

Open
#37,950 3 comments 2 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

app bug config windows-os
Dominant language
Rust
Stars
125k
Forks
19.5k
PR merge metrics
PR metrics pending

Description

What version of the Codex App are you using (From “About Codex” dialog)?

26.803.10989.0

What subscription do you have?

Max

What platform is your computer?

Microsoft Windows NT 10.0.26200.0 x64

What issue are you seeing?

Summary
On Codex desktop for Windows, instructions from ~/.codex/AGENTS.md (the Personality section) reach text conversations but appear to be absent from realtime voice conversations. Every new voice conversation starts without the assistant's identity or any user context, and only acquires it after the user explicitly tells it to read memory. A new text conversation, in the same install and at the same moment, knows all of it immediately.

Environment
Codex desktop (MSIX), version 26.803.10989.0
Windows 11 Pro 26200
model = "gpt-5.6-sol", model_reasoning_effort = "high"
Persona configured through the app's Personality setting, stored in /.codex/AGENTS.md
Steps to reproduce
Put identifying text in the Personality setting, e.g. a line naming the assistant and the user.
Open a new text chat. Ask "who am I and who are you". → answers correctly and immediately.
Open a new voice chat. Ask the same question by voice. → does not know; answers generically until told to consult memory.
Repeat after each new voice conversation. Behaviour is consistent.
What I verified
codex debug prompt-input, run from the voice conversation's own project directory (
/Documents/codex//realtime-voice-chat), does contain the persona text — the identity strings are present in the rendered prompt. So the instructions are resolved correctly for that working directory; the text path receives them and behaves accordingly, while the voice path behaves as if it never saw them.

Additional observations from the same investigation:

A project-level AGENTS.md placed directly inside the voice conversation folder is also present in codex debug prompt-input, yet does not change voice behaviour either.
An AGENTS.md placed in the parent directory of the voice conversation folders is not inherited (marker string absent from prompt-input). This may be intentional, but it means there is no single location that covers all voice conversations, since each one gets its own project folder.
~/.codex/memories/memory_summary.md never appears in prompt-input at all. Memory seems to be consulted only on demand, which compounds the problem for voice: the assistant has neither instructions nor summary at wake-up.
Expected behaviour
A new realtime voice conversation should start with the same instruction stack as a new text conversation — at minimum the Personality / AGENTS.md content.

Impact
For always-on voice use this is a per-conversation tax. The assistant begins every conversation context-blind, and the only workaround is to spend a turn telling it to read memory. It also defeats the purpose of the Personality setting for anyone whose primary surface is voice.

Related: #35103 (voice mode thread disappears after inactivity timeout) — same area, different symptom.

What steps can reproduce the bug?

Steps to reproduce

  1. Put identifying text into the Personality setting — something the assistant
    could only know from there, e.g. the assistant's name and the user's name.
    It is stored in ~/.codex/AGENTS.md.
  2. Open a new text chat. Ask: "who am I and who are you?"
    → Answers correctly and immediately.
  3. Open a new voice chat. Ask the same question by voice.
    → Does not know either. Stays generic until explicitly told to read memory.
  4. Repeat step 3 with any further new voice conversation. Same result every time.

Same machine, same settings, same minute — only the surface differs.

Verification that the instructions do reach that conversation

Each voice conversation gets its own project folder under
`~/Documents/codex//realtime-voice-chat

What is the expected behavior?

A new realtime voice conversation should start with the same instruction stack
as a new text conversation — at minimum the Personality / AGENTS.md content.

Concretely, in the reproduction above, step 3 should behave like step 2: asked
"who am I and who are you?", the assistant answers from the Personality setting
immediately, without being told to consult memory first.

The Personality setting is presented as a global, surface-independent way to
tell Codex who it is and who it is working with. Today it silently applies to
one surface and not the other, with no indication in the UI that voice is
excluded.

If the exclusion is deliberate — for example because the realtime voice layer
runs a separate model with its own prompt — then the expected behaviour would be
a supported way to give that layer a small amount of standing context: either a
voice-specific instructions field, or an explicit note in the Personality
settings UI that it does not apply to voice, so users are not left guessing.

Additional information

Some context on why this matters to me: I build voice agents, and now trying to build one on Codex.

For an agent that lives in voice, standing identity has to be true at wake-up.
Having to say "go read your memory" before every conversation costs a round
trip, and in voice a round trip is an audible pause. That is the one thing
currently keeping me from building on Codex — everything else in the stack works
well.

In my own project I ended up loading the session prompt from user files, re-read
on each connection: persona in one file, a short "memory pill" in another. I am
not suggesting that as the design — you know the constraints on the realtime
layer far better than I do. I mention it only because it makes me hopeful the
gap is a small one, since the Personality setting already exists and already
works for text.

One smaller thing, separate from the fix itself: nothing in the UI indicates
that Personality does not apply to voice. A short note in the settings would
have saved me an evening of figuring it out empirically, and might be much
easier to ship than the wiring itself.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by comparing the instruction stack from codex debug prompt-input for a text conversation with the realtime voice conversation, including ~/.codex/AGENTS.md and ~/.codex/memories/memory_summary.md. Trace where the voice session prompt is assembled and verify that a new voice chat receives the Personality/AGENTS.md content; done when it answers the identity question like a new text chat.

Written by the indexing model from the issue text.

Assessment

Tech stack
rust
Domain
audio-video-rtc
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
48/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.