mirror of
https://github.com/wu736139669/hapi.git
synced 2026-08-05 06:24:37 +00:00
fix(codex): use supported safe-yolo approval policy (#1079)
Co-authored-by: NPUlrk <21106497+NPUlrk@users.noreply.github.com>
This commit is contained in:
@@ -247,7 +247,7 @@ describe('codexLocalLauncher', () => {
|
|||||||
expect(harness.launches).toHaveLength(1);
|
expect(harness.launches).toHaveLength(1);
|
||||||
expect(harness.launches[0]?.codexArgs).toEqual([
|
expect(harness.launches[0]?.codexArgs).toEqual([
|
||||||
'--ask-for-approval',
|
'--ask-for-approval',
|
||||||
'on-failure',
|
'on-request',
|
||||||
'--sandbox',
|
'--sandbox',
|
||||||
'workspace-write',
|
'workspace-write',
|
||||||
'--model',
|
'--model',
|
||||||
|
|||||||
@@ -98,7 +98,7 @@ describe('appServerConfig', () => {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
it('keeps on-failure approvals for safe-yolo threads', () => {
|
it('keeps supported escalation approvals for safe-yolo threads', () => {
|
||||||
const params = buildThreadStartParams({
|
const params = buildThreadStartParams({
|
||||||
cwd: '/workspace/project',
|
cwd: '/workspace/project',
|
||||||
mode: { permissionMode: 'safe-yolo', collaborationMode: 'default' },
|
mode: { permissionMode: 'safe-yolo', collaborationMode: 'default' },
|
||||||
@@ -106,7 +106,7 @@ describe('appServerConfig', () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
expect(params.sandbox).toBe('workspace-write');
|
expect(params.sandbox).toBe('workspace-write');
|
||||||
expect(params.approvalPolicy).toBe('on-failure');
|
expect(params.approvalPolicy).toBe('on-request');
|
||||||
});
|
});
|
||||||
|
|
||||||
it('allows MCP elicitation without enabling sandbox prompts for read-only threads', () => {
|
it('allows MCP elicitation without enabling sandbox prompts for read-only threads', () => {
|
||||||
@@ -460,7 +460,7 @@ describe('appServerConfig', () => {
|
|||||||
cliOverrides: { sandbox: 'read-only', approvalPolicy: 'never' }
|
cliOverrides: { sandbox: 'read-only', approvalPolicy: 'never' }
|
||||||
});
|
});
|
||||||
|
|
||||||
expect(params.approvalPolicy).toBe('on-failure');
|
expect(params.approvalPolicy).toBe('on-request');
|
||||||
expect(params.sandboxPolicy).toEqual({ type: 'workspaceWrite' });
|
expect(params.sandboxPolicy).toEqual({ type: 'workspaceWrite' });
|
||||||
expect(params.collaborationMode).toEqual({
|
expect(params.collaborationMode).toEqual({
|
||||||
mode: 'default',
|
mode: 'default',
|
||||||
|
|||||||
@@ -10,9 +10,9 @@ describe('resolveCodexPermissionModeConfig', () => {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
it('keeps safe-yolo escalation on failure', () => {
|
it('keeps safe-yolo escalation available with a supported approval policy', () => {
|
||||||
expect(resolveCodexPermissionModeConfig('safe-yolo')).toEqual({
|
expect(resolveCodexPermissionModeConfig('safe-yolo')).toEqual({
|
||||||
approvalPolicy: 'on-failure',
|
approvalPolicy: 'on-request',
|
||||||
sandbox: 'workspace-write',
|
sandbox: 'workspace-write',
|
||||||
sandboxPolicy: { type: 'workspaceWrite' }
|
sandboxPolicy: { type: 'workspaceWrite' }
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -26,8 +26,10 @@ export function resolveCodexPermissionModeConfig(mode: CodexPermissionMode): Cod
|
|||||||
};
|
};
|
||||||
case 'safe-yolo':
|
case 'safe-yolo':
|
||||||
return {
|
return {
|
||||||
// Keep escalation available when the workspace-write sandbox blocks a command.
|
// Current Codex versions reject the removed `on-failure` policy. Keep
|
||||||
approvalPolicy: 'on-failure',
|
// escalation available through `on-request`; HAPI auto-approves these
|
||||||
|
// requests in safe-yolo mode.
|
||||||
|
approvalPolicy: 'on-request',
|
||||||
sandbox: 'workspace-write',
|
sandbox: 'workspace-write',
|
||||||
sandboxPolicy: { type: 'workspaceWrite' }
|
sandboxPolicy: { type: 'workspaceWrite' }
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user