Codex questions

When the hook finds something worth your call, Codex asks you about it in a form, one finding at a time. Pick an answer, pick Other to write your own, or pick Leave Unsettled to come back to it later.

The form comes from tern_ask_user, a small MCP server that tern hook install registers in ~/.codex/config.toml:

[mcp_servers.tern]
command = "/path/to/tern"
args = ["mcp", "serve-ask"]
default_tools_approval_mode = "approve"

default_tools_approval_mode = "approve" stops Codex asking permission before every question. tern hook uninstall removes the table.

When Codex blocks the questions

Some Codex approval settings close forms before you see them:

  • approval_policy = "never" in config.toml, or -a never / --ask-for-approval never on the command line.
  • Full access in the Codex desktop app’s per-task permission picker. It overrides config.toml.

When that happens, Codex lists what Tern found as a short bulleted summary in the chat. It settles nothing, and the findings come back on a later run.

Allowing questions without other prompts

If you run Codex with approvals off, you can still allow Tern’s questions. A granular approval policy lets MCP forms through and keeps the other prompts off:

approval_policy = { granular = { sandbox_approval = false, rules = false, skill_approval = false, request_permissions = false, mcp_elicitations = true } }

Or use the default approval policy (on-request), which shows forms as usual.

Non-interactive runs

codex exec has no form UI. Tern doesn’t ask there and leaves the findings for a later interactive session.