Proposal: Support custom collaboration modes with configurable request_user_input access
#11717
Replies: 2 comments
-
|
If this idea aligns with the Codex roadmap and the team finds value in it, I'd be happy to take a stab at implementing it and submitting a PR. Of course, I'd appreciate any guidance on the preferred approach or architectural constraints before diving in — want to make sure it fits well with the existing codebase and the team's vision for collaboration modes. |
Beta Was this translation helpful? Give feedback.
-
|
Hey @AmirTlinov , thanks for proposing this. As you said I am using Superpowers and it is basically like have all modes at the same time without needing to switch manually between them, the agent switch "modes" using skills, so in my case I would create a "Superpowers" mode with instructions to read superpowers skills. Or I could use a mode where I explicitly instruct to NOT use superpowers skills. What if we could allocate a subset of skills to specific modes ? In Codex we can already enable or disable skills but I think It is global for all modes. |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
-
Summary
Currently, Codex supports two built-in collaboration modes — plan and code — with the
request_user_inputtool being restricted to plan mode only. This proposal suggests enabling users to define custom collaboration modes viaconfig.toml(orAGENTS.md), each with explicit control over which tools are available — specifically including or excludingrequest_user_input.Motivation
The current binary plan/code mode design doesn't fit many real-world workflows. Users have already expressed strong demand for
request_user_inputavailability outside of plan mode (see Related Issues below), and beyond that, there are entire categories of workflows that don't map cleanly to either existing mode:request_user_input, but doesn't write any code or run commandsrequest_user_input, then applies themrequest_user_input, then records the resultAll of these share a common pattern: they need selective tool access and most critically need
request_user_inputto function as interactive, conversational workflows.Proposed Design
1. Custom modes in
config.toml2. Mode definition schema
Each custom mode should support:
display_namedescriptiontoolssandboxread_only/workspace_write/full_writesystem_prompt_appendinherit_fromplanorcodeas a base3. Interaction with existing modes
planandcodemodes remain as defaults and cannot be overriddencollaboration_modes = trueconfig flag could be extended or a newcustom_modes = trueflag addedUse Cases in Detail
Interactive Triage (the killer use case)
As mentioned in the comments on #10384, a common need is interactive item-by-item workflows — the agent asks a question, the user answers, the agent acts, then asks the next question. This is impossible in code mode today because
request_user_inputis blocked.With custom modes, this becomes trivial:
Obra Superpowers Integration
Community member @Gamarsoft noted on #10384 that Obra Superpowers heavily relies on custom planning/brainstorming instructions and would benefit from
request_user_inputin custom skill modes. Custom modes would formalize this pattern.Technical Considerations
Mode instruction isolation (#10570)
The existing bug where mode switch leaves stale instructions in conversation history becomes even more important to fix before custom modes land. Each mode switch should:
system_prompt_appendfrom the contextTool validation
When a custom mode specifies
tools = [...], the runtime should:mcp:my_server:my_tool)Backward compatibility
planandcodeconfigs remain unchanged[modes.*]sections in config see no differencecustom_collaboration_modes = trueinitiallyRelated Issues
request_user_inputtool available in code mode (6 upvotes, open feature request, multiple duplicates marked)request_user_inputin Default mode) (closed as dup of Make request_user_input tool available in code mode #10384)Questions for Discussion
config.toml, in a separatemodes.toml, or inAGENTS.md?inherit_from = "code") or always start from scratch?.codex/modes.tomlor similar) vs globally?Would love to hear thoughts from the community and maintainers on this. The core request — making
request_user_inputavailable outside plan mode — has clear demand, and a custom modes system would address it in a general, extensible way.Beta Was this translation helpful? Give feedback.
All reactions