Skip to content

[Bug]: runtimeMode auto sends removed on-failure approval policy #50

Description

@iWiley

Language

  • I wrote this issue in English, or included a concise English summary first.

Network checklist

Not applicable: the phone can reach Relay through the configured tunnel and load thread content. These reports concern request compatibility or local thread metadata/rollout handling after a connection has already been established.

Versions

  • Codex Relay: 1.4.5
  • Codex CLI / app-server: 0.146.0
  • Node.js: 24.7.0
  • OS: macOS 26.5.2
  • Mobile app: version not exposed in the client UI

Summary

A workspace configured with runtimeMode: "auto" cannot start a new turn when Relay 1.4.5 uses a shared Codex 0.146.0 app-server.

Relay maps auto to approvalPolicy: "on-failure", but this app-server accepts only untrusted, on-request, granular, and never.

Steps to reproduce

  1. Run Codex 0.146.0 as the shared app-server.
  2. Run Codex Relay 1.4.5 with --shared-app-server.
  3. Configure a workspace with runtimeMode: "auto".
  4. Resume an idle persisted thread from the mobile client.
  5. Send a message.

Expected behavior

Relay sends a currently supported approval policy, or omits the field and lets app-server use its default. The turn starts and the user message is persisted.

Actual behavior

The client briefly shows the optimistic message, then the turn fails and no user message is persisted.

Changing the workspace runtime mode from auto to default is a working local workaround because Relay then sends on-request.

Logs or screenshots

Invalid request: unknown variant 'on-failure', expected one of 'untrusted', 'on-request', 'granular', 'never'

Possible fix

Normalize the legacy on-failure value before sending the request, or negotiate supported values with app-server. A compatibility test against current Codex approval-policy variants would prevent regression.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions