Slash-command settings should be session-scoped by default
Nobody has claimed this yet.
- Dominant language
- Rust
- Stars
- 125k
- Forks
- 19.4k
- PR merge metrics
- PR metrics pending
Description
What version of Codex are you using?
Codex CLI 0.148.0
What platform is your computer?
macOS arm64
What issue are you seeing?
Manual slash-command settings are unexpectedly sticky across unrelated sessions.
I used /fast as a one-off change for the current thread. Codex wrote service_tier = "fast" to ~/.codex/config.toml, so later fresh Codex processes and unrelated agents inherited the accelerated tier even though their launch commands did not request it.
The broader problem is not limited to /fast: most or all interactive slash-command selectors—such as model, reasoning effort, personality, and service tier—should be scoped to the current thread/session by default. A manual experiment in one conversation should not silently change defaults for future conversations.
What steps can reproduce the bug?
- Start Codex without an explicit service-tier override.
- Use
/fast, intending it as a one-off current-thread change. - Observe that
~/.codex/config.tomlgainsservice_tier = "fast". - Start a fresh, unrelated Codex process without a service-tier argument.
- Observe that the new process inherits Fast.
What is the expected behavior?
Slash-command changes should affect only the current thread/session by default.
Persisting a choice for future sessions should require a separate, explicit action such as Make default, or a clearly labeled confirmation. The UI should distinguish:
- the effective value for the current thread;
- the configured default for future threads; and
- whether the current action will mutate persistent configuration.
This should apply consistently to /fast, /model, reasoning-effort, personality, and similar interactive selectors unless a setting is inherently global and clearly presented as such.
Why this matters
The current behavior makes one-off experimentation unsafe and can unintentionally change cost, latency, or behavior across unrelated agents and workstreams.
A command-line override such as -c service_tier=default is a workaround, but callers should not need to defensively override a persistent mutation they never intentionally made.
Additional information
Feedback was also submitted through /feedback without logs. Feedback thread ID: 01a01bb2-7780-7232-ba37-8d749e19ec8b.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by tracing how interactive slash-command selectors update the current thread and how those changes are written to ~/.codex/config.toml. Compare /fast with model, reasoning-effort, and personality handling, then determine how session values and persistent defaults should be separated. Done means one-off changes no longer affect unrelated future sessions and explicit default changes remain distinguishable.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- rust
- Domain
- cli
- Issue type
- Bug
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100