Skip to main content
A fault is armed on a method and path template, or on a webhook event, and stands until cleared. Arm one on the served sandbox with chaos, in a scenario with an INJECT_FAULT step, or from a coding agent with arm_fault.

HTTP faults

Delays compose: a latency fault on top of an error delays the error. Every delay is capped at 60 seconds.

Webhook faults

These match on the event (--event, default any) rather than on a method and path.

Virtual versus real time

By default every delay is virtualized: the response is instant and carries x-pikopod-fault-delay-ms with the delay it represents. That is what scenario run measures, and it is why a 30-second timeout scenario finishes in milliseconds. hang, slow_body, connection_reset, malformed_response and wrong_content_length are transport-level lies and only act on the real wire. To put delays and hangs on the wire for your own tests, arm with --wallclock, or start the server with pikopod up --wallclock-faults.

Probability and windows

Every response that a fault touched carries x-pikopod-fault-applied, which is what the execution.faultApplied assertion reads.

Listing and clearing

--clear with no method and path clears every fault, including webhook faults. mode clear also clears every fault. See pikopod chaos.