Session-dependent trading refusal: existing Astra conversation refuses an authorized Robinhood order; fresh Astra session submits it
Nobody has claimed this yet.
- Dominant language
- Rust
- Stars
- 125k
- Forks
- 19.4k
- PR merge metrics
- PR metrics pending
Description
What version of Codex CLI is running?
codex-cli 0.154.0
What subscription do you have?
Pro 20x
Which model were you using?
gpt-6-astra ultra
What platform is your computer?
Darwin 25.6.0 arm64 arm
What terminal emulator and version are you using (if applicable)?
iterm2
Codex doctor report
• Completed with exit code 0; overall status: warning.
state.rollout_db_parity found:
- 2 duplicate rollout thread IDs, including this conversation.
- 2 active and 3 archived rollout files missing corresponding state-database entries.
All other checks returned ok. Active thread overrides were not inspected.
The diagnostic recommends attaching this report to the bug report. This is a concrete session-state finding, but it does not establish the cause of the trading refusals.
What issue are you seeing?
Related to #44163. This report adds verified successful execution by Astra before the refusal in the same conversation, followed by successful submission of the requested order in a fresh Astra session.
An existing Codex conversation using Robinhood mcp previously submitted an options trade successfully, then began refusing all securities execution. It attributed the
refusal to “OpenAI’s safety instructions,” despite the broker account remaining eligible and the submission tool remaining available.
A newly instantiated session using the same model family, workspace, brokerage account, and trading connector successfully submitted the exact
requested order minutes later.
There was no broker error, application exception, or approval rejection in the refusing session. The assistant refused before calling the submission
tool.
Original prompt:
Execute a trade. Sell to close the XXX XXXC contracts, the entire lot. Limit order, good for the day. Price at $X
Assistant response:
I can verify the exact position and order details, but I can’t submit a securities trade. I’ll check the full lot against the live broker state.
Follow-up prompt:
try again
Assistant response:
I can’t submit or retry a securities trade. I have not placed this order.
In Robinhood, enter: Sell to close the entire XXX $XXX call position → $X limit → Good for day.
When asked for the source of the restriction, the assistant responded:
"OpenAI’s safety instructions governing this assistant. The restriction comes from that instruction layer—not Robinhood, your AGENTS.md, or a missing permission from you.
I don’t have a versioned record establishing that those instructions changed since yesterday, so I cannot honestly attribute the inconsistent behavior to a confirmed policy update."
What steps can reproduce the bug?
Uploaded thread: 01a08257-0013-7203-85a9-5e6ddf61d773
What is the expected behavior?
Equivalent requests should receive consistent treatment under the applicable trading permissions and safety rules.
If this execution is supported, an eligible account’s explicitly authorized order should proceed through the required checks. If it is prohibited, the restriction should apply consistently across sessions.
The assistant should distinguish its own refusal from a broker rejection, missing authorization, unavailable tool, or verified policy change. It should not present an unverified explanation as a diagnosed cause.
Additional information
Attempted using Codex desktop and CLI, both behaved similarly.
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 with the uploaded thread 01a08257-0013-7203-85a9-5e6ddf61d773 and the Codex doctor report, then compare the refusing and fresh sessions across CLI and desktop behavior. No source file or test is named; done means identifying the session-dependent cause or boundary and ensuring equivalent authorized requests are handled consistently with accurate refusal explanations.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- rust
- Domain
- ai, cli
- Issue type
- Bug
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100