mirror of
https://github.com/openai/codex.git
synced 2026-10-19 17:28:46 +00:00
## Why MCP requests that need human input, including browser sign-in, must be handled by the root thread. Subagents need guidance to hand these blockers to their parent without prompting the user or automatically accepting requests that require input. ## What changed - Reject interactive MCP elicitations and tool approval prompts in subagents with guidance to ask the parent and wait before retrying. - Recognize browser authentication and `codex_requires_user_input` metadata even when the form schema is empty, while preserving automatic permission approvals and review decisions. - Carry user-interaction eligibility through MCP runtime creation and connection reuse, and guard prompt registration. - Preserve connector authentication diagnostics alongside handoff guidance, subject to normal tool-output limits. ## Testing Add unit and integration coverage for blocked subagent prompts, root browser authentication, automatic approval and review, connection reuse, and authentication diagnostic preservation and truncation. Add a request-history snapshot for browser-auth handoff guidance. GitOrigin-RevId: 83e146b6e5c1a2a22a34681ad45615f504b3c96c
30 lines
1.7 KiB
Rust
30 lines
1.7 KiB
Rust
/// Identifies privileged Codex approvals. Changing this key or adding another
|
|
/// privileged discriminator requires updating the MCP elicitation router's
|
|
/// form-forwarding safeguards.
|
|
pub const APPROVAL_KIND_KEY: &str = "codex_approval_kind";
|
|
pub const APPROVAL_KIND_MCP_TOOL_CALL: &str = "mcp_tool_call";
|
|
pub const APPROVAL_KIND_BROWSER_AUTH: &str = "browser_auth";
|
|
pub const APPROVAL_KIND_TOOL_SUGGESTION: &str = "tool_suggestion";
|
|
/// Marks requests that need user input even when their form schema is empty.
|
|
pub const REQUIRES_USER_INPUT_KEY: &str = "codex_requires_user_input";
|
|
pub const REQUEST_TYPE_KEY: &str = "codex_request_type";
|
|
pub const REQUEST_TYPE_APPROVAL_REQUEST: &str = "approval_request";
|
|
pub const STRICT_AUTO_REVIEW_KEY: &str = "codex_strict_auto_review";
|
|
/// Marks a sensitive action requiring synchronous review when routed to automatic review.
|
|
/// Absent or false preserves the existing approval path; this does not opt into review.
|
|
pub const SENSITIVE_ACTION_KEY: &str = "codex_sensitive_action";
|
|
pub const APPROVALS_REVIEWER_KEY: &str = "approvals_reviewer";
|
|
pub const PERSIST_KEY: &str = "persist";
|
|
pub const PERSIST_SESSION: &str = "session";
|
|
pub const PERSIST_ALWAYS: &str = "always";
|
|
pub const SOURCE_KEY: &str = "source";
|
|
pub const SOURCE_CONNECTOR: &str = "connector";
|
|
pub const CONNECTOR_ID_KEY: &str = "connector_id";
|
|
pub const CONNECTOR_NAME_KEY: &str = "connector_name";
|
|
pub const CONNECTOR_DESCRIPTION_KEY: &str = "connector_description";
|
|
pub const TOOL_NAME_KEY: &str = "tool_name";
|
|
pub const TOOL_TITLE_KEY: &str = "tool_title";
|
|
pub const TOOL_DESCRIPTION_KEY: &str = "tool_description";
|
|
pub const TOOL_PARAMS_KEY: &str = "tool_params";
|
|
pub const TOOL_PARAMS_DISPLAY_KEY: &str = "tool_params_display";
|