Rehearse a Purchase with Dry-Run
Rehearse a purchase, void, or shipment creation without spending anything.
Use this recipe before your first real purchase, void, or shipment creation, and whenever you change an intent that can spend money. Dry-run shows what the agent would do without charging anything, and the envelope tells you exactly which writes were simulated and which still ran.
postsale run --dry-run "Purchase a PDF label for shipment <shp_id>"
postsale run --dry-run "void shipment <shp_id>"
postsale run --dry-run "Ship order <ord_id> with the cheapest carrier"A live rehearsal that still costs nothing
Dry-run simulates the money-moving tools, so it never proves the real purchase path end to end. When you want the real path at zero carrier cost, set POSTSALE_TEST_LABEL_MODE=1 instead: the shipment is created as a test shipment, the purchase runs for real against the carrier's test environment, and the label comes back watermarked and unbilled. The two compose when the agent actually calls purchase_labels: with both set, the preview shows the test-label refusal a real run would give. The model may instead read a non-test shipment and stop without calling the tool, so to see the refusal deterministically run the direct purchase command under the mode (test_label_required, exit 64, nothing bought). Walkthrough: Test Without Spending.
What to read in the envelope
| Field | Meaning |
|---|---|
simulated_effects | Intercepted money/destructive/status tools |
confirmed_effects | Real writes that still ran |
tool_calls | Full tool log |
Still real under dry-run
create_order, update_order, update_shipment, tags, bulk field edits, filter create/update.
Batches
Batch authorization still required for money-moving parallel batches under dry-run.
Additional Reading
On this page
Related