Añade a Codex un aviso del sistema de “vuelve y ocúpate”: Codex Attention Notifier

Acabo de organizar en una pequeña herramienta lo que resolví hace un momento en mi máquina sobre el problema de que Codex se salteaba las notificaciones:

También lo publiqué en el área de discusiones de openai/codex:

El problema que resuelve es: la notificación por defecto de fin de turn de Codex no cubre todos los escenarios en los que “tienes que volver para encargarte”. Por ejemplo, cuando una tarea va a mitad y necesita aprobación de permisos, o cuando está a punto de ejecutar comandos como sudo xcodebuild -license accept, instaladores, softwareupdate y similares, que muy probablemente requieren introducir la contraseña de administrador: si la ventana no está en primer plano, es fácil pensar que Codex sigue corriendo, cuando en realidad ya se quedó esperando a alguien.

Resultado:

  • Cuando Codex emite PermissionRequest, aparece una notificación del sistema de macOS.
  • Antes de ejecutar comandos habituales que requieren intervención humana, avisa con antelación, por ejemplo sudo, xcodebuild -license, xcodebuild -runFirstLaunch, instaladores .pkg, softwareupdate, AppleScript administrator privileges.
  • Los comandos normales no notifican; no salta una notificación cada vez que haces ls, git o un build.
  • Solo hace notificaciones y registros; no aprueba, rechaza ni reescribe automáticamente las llamadas a herramientas de Codex.
  • El log se escribe en ~/.codex/logs/codex-attention-notifier.log.

Método de instalación:

git clone https://github.com/constansino/codex-attention-notifier.git
cd codex-attention-notifier
python3 install.py

Después de instalarlo, reinicia Codex Desktop o abre una nueva sesión de Codex para que la nueva configuración de hooks surta efecto.

Puedes probarlo con este comando: no ejecuta sudo de verdad, solo simula la entrada del hook de Codex:

printf '%s\n' '{"hook_event_name":"PreToolUse","tool_name":"Bash","cwd":"'"$PWD"'","tool_input":{"command":"sudo xcodebuild -license accept"}}' \
  | python3 ~/.codex/hooks/codex_attention_notify.py

Si todo va bien, verás una notificación de macOS y también podrás ver el log:

tail -n 5 ~/.codex/logs/codex-attention-notifier.log

También dejo claras las limitaciones: esto no es una función oficial de primera clase, sino un parche práctico basado en los hooks de Codex. Para el caso en que “el subproceso ya empezó a correr y recién después se queda bloqueado en stdin/contraseña”, por ahora Codex no tiene un hook estable de evento de espera de entrada, así que esta herramienta cubre los escenarios comunes identificando comandos de alto riesgo antes de ejecutarlos.

更新一下:这个工具的默认安装方式已经改成只保留 PermissionRequest 通知,不再默认启用 PreToolUse

原因是 Codex app 目前会把每一次 PreToolUse hook 都显示成“调用工具前”的记录。即使脚本内部判断普通命令后直接退出,UI 里还是会出现很多 hook 记录,实际体验会比较吵。

现在默认行为是:

  • Codex 真正发出权限请求时通知。
  • 不再每次 Bash 调用前运行 PreToolUse
  • 所以不会再刷“调用工具前”记录。

对应的限制是:sudo Password: 这类子进程密码输入等待,默认方案不再提前兜底。Codex 目前还没有稳定的“子进程已经进入等待 stdin/password 状态”的 hook;如果强行用 PreToolUse 做前置识别,就会带来上面说的 UI 噪音。

仓库 README 和安装脚本已经更新: