1. The Status page (health check)
The Status page checks each link in the chain and gives a verdict:
| Check | What it covers |
|---|---|
| ChatGPT.app | Installed? Which version? |
| Kernel | The bundled kernel path and version gate |
| Wrapper | Whether ~/.coskey/bin/codex is installed |
| Environment injection | Whether the login-level environment points at the wrapper |
| Keychain | Whether a key entry exists for every provider |
| Endpoint reachability (optional) | Whether each provider endpoint responds |
| Default model | Set, and present in the catalogue |
| Global switch | Enabled or disabled |
| Relay | Whether the port is live (not running while the app is closed is normal) |
Work through whatever the failing rows tell you; the same checks are available on the command line:
coskey doctor # local checks, no network requests
coskey doctor --probe # also probes each provider endpoint
2. The Settings page
| Group | Contents |
|---|---|
| Appearance | Theme and light/dark, applied immediately and stored locally |
| Global switch | Off turns the wrapper into a plain passthrough, equivalent to stock behaviour |
| Model catalogue | Long-context unlock, window templates and the catalogue cache |
| Default and policy | The default model (immediate) and the official-model policy, redirect or passthrough |
| Maintenance | Re-run the health check, logs, updates |
| Uninstall | Remove the injection and wrapper — see Disable and uninstall |
3. Logs
~/.coskey/logs/wrapper.logand~/.coskey/logs/relay.log(JSON lines, warn level by default, redacted);- Enable debug logging and restart the app to see a summary of every interception, rewrite and route — no keys involved.
4. Releasing a pinned session
Both the Sessions page and the CLI can release a pin so the session follows the default model again:
coskey unpin <threadId> # release the pin
coskey threads # show pinning state per session
Next: FAQ.