fix(codex): bridge MCP elicitation through user input (#1008)

* fix(codex): bridge MCP elicitation through user input

* fix(codex): allow MCP elicitation in yolo mode

* fix(codex): preserve MCP form semantics

* fix(codex): accept implicit MCP form mode

* fix(codex): harden MCP elicitation prompts

* fix(codex): require valid MCP choice answers

* fix(codex): round-trip MCP array elicitation

* fix(web): require explicit MCP URL confirmation

* fix(codex): preserve MCP array item types

* fix(codex): support multi-select MCP elicitation

* fix(codex): allow MCP elicitation in read-only mode

* fix(codex): route MCP tool approvals through permissions
This commit is contained in:
SSU-WEI HUANG
2026-07-12 18:42:55 +08:00
committed by GitHub
parent 474db94136
commit d97b270ba8
15 changed files with 1006 additions and 91 deletions
+16
View File
@@ -23,7 +23,23 @@ const MODELS_WITHOUT_REASONING_SUMMARY = new Set([
'gpt-5.3-codex-spark'
]);
const MCP_ELICITATION_ONLY_APPROVAL_POLICY = {
granular: {
sandbox_approval: false,
rules: false,
skill_approval: false,
request_permissions: false,
mcp_elicitations: true
}
} as const satisfies ApprovalPolicy;
function resolveApprovalPolicy(mode: EnhancedMode): ApprovalPolicy {
if (mode.permissionMode === 'yolo' || mode.permissionMode === 'read-only') {
// Codex's `never` policy auto-declines MCP elicitations before app-server
// can forward them. Keep command/sandbox prompts disabled for Yolo and
// read-only while allowing auth and structured input to reach HAPI's UI.
return MCP_ELICITATION_ONLY_APPROVAL_POLICY;
}
return resolveCodexPermissionModeConfig(mode.permissionMode).approvalPolicy;
}