Verbinden schreibt sie für dich, Trennen nimmt sie wieder heraus. Hier stehen sie, damit du genau weißt, was sich ändert, oder um es von Hand einzurichten.
Antworten: das notify-Programm
Codex startet sein notify-Programm nach jedem Durchlauf und übergibt ein JSON-Ereignis als letztes Argument. Das Ereignis agent-turn-complete enthält last-assistant-message, und genau das wird vorgelesen.
# ~/.codex/config.toml (ganz oben)
notify = ["C:/Program Files/VoicedByMe/voicereader-say.exe", "--codex"]
Lass notify über jeder [Tabelle]-Überschrift stehen. In TOML gehört ein Schlüssel unter [mcp_servers] oder [tui] zu dieser Tabelle, und Codex sieht ihn nie. Das ist der häufigste Grund, warum ein notify-Programm nie läuft.
Erlaubnisanfragen: ein Hook
// ~/.codex/hooks.json
{
"hooks": {
"PermissionRequest": [
{ "hooks": [{ "type": "command", "command": "…/voicereader-say --codex-hook", "timeout": 10 }] }
]
}
}
Sprechen auf Wunsch: ein MCP-Server
[mcp_servers.voice-reader]
command = "C:/Program Files/VoicedByMe/voicereader-say.exe"
args = ["--mcp"]
Die echten Einträge enthalten außerdem den lokalen Port und einen privaten Schlüssel, damit nur Programme auf deinem Computer sie sprechen lassen können.