# `mix pixir.smoke.websocket`
[🔗](https://github.com/Ranvier-Technologies/pixir/blob/main/lib/mix/tasks/pixir.smoke.websocket.ex#L1)

Runs a bounded real-network smoke against the Responses WebSocket transport.

This validates the Codex-first subscription path as an opt-in smoke for the
production Provider transport. It intentionally avoids printing tokens, account ids,
or full response ids.

Usage:

    mix pixir.smoke.websocket --dry-run --json
    mix pixir.smoke.websocket --json
    mix pixir.smoke.websocket --model gpt-5.5 --reasoning-effort low --json
    mix pixir.smoke.websocket --probe-cache-routing --json
    mix pixir.smoke.websocket --endpoint wss://chatgpt.com/backend-api/codex/responses --json
    mix pixir.smoke.websocket --help

Checks:

  * WebSocket handshake returns `101 Switching Protocols`.
  * Minimal `response.create` replies with `ok`.
  * Same-socket `previous_response_id` continuation replies with `ok2`.
  * A tool-call loop can continue with `function_call_output`.
  * A new socket cannot continue a `store: false` response from an old socket.

Options:

  * `--model MODEL` - model to probe. Default: `gpt-5.5`.
  * `--reasoning-effort EFFORT` - low/medium/high/xhigh. Default: `low`.
  * `--endpoint URL` - `wss://...` endpoint. Default: auto from credential kind.
  * `--timeout-ms N` - per response timeout. Default: 30000.
  * `--output DIR` - evidence directory. Default: `.pixir/smoke/websocket/<run_id>`.
  * `--probe-cache-routing` - add two cache-eligible long-prefix requests with a
    stable `prompt_cache_key`.
  * `--cache-key KEY` - cache key used by `--probe-cache-routing`.
  * `--dry-run` - validate and print planned checks without auth, network, or writes.
  * `--json` - print machine-readable evidence or errors.
  * `--help` - print this help and exit.

---

*Consult [api-reference.md](api-reference.md) for complete listing*
