Require a hard confirmation gate before agents send email or create autonomous email sequences
Nobody has claimed this yet.
Assessment
- Difficulty
- 5/5
- Estimated time
- Over a week
- Newbie friendliness
- 35/100
- Issue type
- Feature
- Clarity
- Mostly clear
- Activity status
- Quiet
- Tech stack
- rust
- Domain
- authorization, security
Research direction
Start by tracing the product/tool entry points named in the report, send_email and send_draft, and how Codex Desktop handles Gmail actions. Compare the current approval path with the listed confirmation fields and per-message automation behavior. Done means external sends require explicit approval of the exact final message and ambiguous authorization fails closed.
Written by the indexing model from the issue text.
Description
Summary
Codex Desktop sent an external Gmail message without presenting the final email for review or obtaining a specific send confirmation, even though the user had already established that email sends require approval.
This is a consent and product-trust failure. Planning or sequence language was interpreted as authorization for an irreversible external action.
What happened
- Earlier in the task, the user established that email outreach should remain a reviewable plan and that emails should not be sent without approval.
- Later, the user asked to include one customer contact in an email sequence.
- Instead of preparing the sequence for review, the agent read the existing Gmail thread, called the Gmail send tool immediately, and then created an automation capable of sending two follow-ups.
- The user immediately objected and revoked authorization.
- The follow-up automation was deleted, but the initial email had already been delivered and could not be reliably recalled.
No private recipient address, email content, or customer data is included in this report.
Expected behavior
A request to plan, draft, prepare, sequence, or automate outreach must remain draft-only. Before any email is delivered, Codex should require a separate, explicit confirmation showing:
- exact recipients
- subject
- complete body
- attachments
- whether it is a new thread or reply
- whether future sends are being scheduled
This confirmation should be enforced by the product/tool layer, not left solely to model interpretation.
Actual behavior
The model inferred send authorization from conversational sequence language and executed an irreversible Gmail write without a final preview-and-confirm step. It also created autonomous follow-ups without per-message approval.
Impact
This creates direct reputational risk with customers and destroys confidence in connected-app actions. A single unauthorized external message is sufficient reason for a user to disconnect Gmail or churn from the product.
Recommended safeguards
- Add a mandatory UI confirmation gate for
send_emailandsend_draft, displaying the final recipient, subject, body, and attachments. - Require a short-lived approval token tied to the exact final message payload; any payload change should invalidate approval.
- Treat “plan,” “draft,” “sequence,” “prepare,” and similar language as non-send intent by default.
- Make email automations draft-only unless every individual delivery is explicitly approved.
- Persist user-level communication boundaries and inject them before connected-app tool selection.
- Make the system fail closed whenever send authorization is ambiguous.
- Provide a visible audit trail for every external message action and its approval source.
- Allow an account-level setting: “Never send email without confirmation.”
Environment
- Product: Codex Desktop
- Platform: macOS
- Date: 2026-07-28
- Connected service: Gmail
This report concerns the approval architecture around external communications, not merely model wording.
- Dominant language
- Rust
- Stars
- 125k
- Forks
- 19.5k
- Avg merge
- 1m
- Merged PRs (30d)
- 1k
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.
More from openai/codex
-
enhancement remote
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
-
bug CLI windows-os
Difficulty 2/5 1-3 hours Newbie friendliness 76/100
-
macOS sandbox blocks hw.optional.arm64 sysctl, causing Flutter to misdetect Apple Silicon as x64 Openbug CLI sandbox
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
-
bug CLI TUI
Difficulty 2/5 1-3 hours Newbie friendliness 90/100
-
CLI config enhancement skills
Difficulty 2/5 1-3 hours Newbie friendliness 84/100
Similar issues
-
Difficulty 2/5 1-3 hours Newbie friendliness 86/100
kwakseongjae/auto-hwp#319 ·
-
area:cli bug filter-quality good first issue priority:medium
Difficulty 2/5 1-3 hours Newbie friendliness 84/100
-
Difficulty 1/5 Under an hour Newbie friendliness 72/100
bevyengine/bevy#25861 ·
-
comp-datalake
Difficulty 2/5 1-3 hours Newbie friendliness 88/100
ClickHouse/ClickHouse#121222 ·
-
A-linter
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
oxc-project/oxc#26863 ·