# `mix mailglass.inbound.replay`
[🔗](https://github.com/szTheory/mailglass/blob/v2.3.0/lib/mix/tasks/mailglass.inbound.replay.ex#L1)

Replay previously-received inbound records through their mailboxes.

`--tenant <id>` is **required** — it is the cross-tenant replay guard (T-49-17):
every record is loaded scoped to that tenant, so a foreign-tenant `--record-id`
resolves to nothing rather than replaying across the boundary. `--record-id` and
`--since <iso8601>` further narrow the set WITHIN that tenant (AND-combinable).
Matching records are iterated through the shipped single-record
`MailglassInbound.Internal.Replay.replay/2`, which appends an `ExecutionRun` with
`source: :replay` (append-only — no UPDATE).

## Usage

    mix mailglass.inbound.replay --tenant acme --record-id <uuid>
    mix mailglass.inbound.replay --tenant acme --since 2026-05-01T00:00:00Z
    mix mailglass.inbound.replay --tenant acme --dry-run
    mix mailglass.inbound.replay --tenant acme --yes

In single-tenant deployments pass the resolver's tenant (`--tenant default` under
`Mailglass.Tenancy.SingleTenant`). Replay is non-destructive (it appends lineage
rows), so the confirmation tier is a simple `[y/N]` defaulting to **No**.
`--yes`/`-y` skips the prompt; `--dry-run` reports the count + scope without
replaying. Zero matches exits `0` with "nothing to replay."

---

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