hunt-race-condition

Tests concurrency and state-machine race conditions on authorized, rollback-capable targets.

10|3|Updated Aug 10, 2026
One-click install
npx skills add https://github.com/baiqigo/baiqi-redteam-lab --skill hunt-race-condition-baiqigo
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: hunt-race-condition
Source: https://github.com/baiqigo/baiqi-redteam-lab/tree/main/.agents/skills/hunt-race-condition
Command: npx skills add https://github.com/baiqigo/baiqi-redteam-lab --skill hunt-race-condition-baiqigo

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve? Web applications often break business invariants under concurrent requests — one-time tokens get redeemed twice, balances go negative, approvals execute multiple times. This Skill provides a controlled, evidence-gated methodology to verify atomicity of duplicate submissions, one-time tokens, inventory/balance operations, and approval/revocation flows without causing real financial, inventory, or availability impact. ## Core Features & Use Cases - Controlled Concurrency Experiments: Runs low-volume concurrent replicas of the same self-owned operation via hunter_auto_race or Burp/HTTP2 single-packet gates, escalating gradually with full request logging. - Invariant-First Oracle Design: Requires writing explicit invariants (token consumed once, balance never negative, idempotent request IDs) and only accepts server-side persisted state or audit logs as proof — repeated 200s, async delays, and UI artifacts are rejected as false positives. - Strict Safety Gates: Enforces authorization and scope checks, self-owned test accounts and rollback-capable data, and hard stop conditions (real charges, resource exhaustion, third-party notifications, missing rollback). - Use Case: During an authorized assessment of a checkout flow, verify whether a coupon redemption endpoint atomically consumes a one-time token by firing a small concurrent burst against your own test order, then confirming via server-side state and audit logs before rolling back. ## Quick Start Ask the agent to verify whether the coupon redemption endpoint on my authorized test account is atomic under concurrent requests, using rollback-capable test data only.

Frequently Asked Questions about hunt-race-condition

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I test a web application for race condition vulnerabilities?

Race condition testing sends concurrent replicas of the same operation using tools like Burp's single-packet attack or HTTP/2 gates, then checks server-side state for broken invariants. This Skill requires self-owned test accounts, explicit rollback, and audit-log confirmation before counting a finding.

What counts as valid evidence of a race condition bug?

Valid evidence is a broken invariant confirmed by server-side persisted state or audit logs, reproducible in at least two rounds. Repeated HTTP 200 responses, async delays, UI display glitches, and single network retries are explicitly rejected as false positives.

Which endpoints should I test for concurrency issues?

Target one-time token redemption, coupon and checkout flows, inventory and balance updates, approval and revocation workflows, idempotency-keyed requests, and async webhook handlers. These are the trigger signals where atomicity violations cause real business impact.

Can race condition testing cause damage to production systems?

Yes, uncontrolled concurrency testing can cause real charges, inventory corruption, or unwanted emails. This Skill mitigates that by requiring self-owned rollback-capable data, low initial request volumes, and hard stop conditions when real impact or missing rollback is detected.

Why does my race condition test show duplicate 200 responses but no bug?

Duplicate 200 responses often reflect idempotent handling, client retries, or asynchronous processing rather than a broken invariant. Always confirm against authoritative server-side state or audit logs after the async queue stabilizes, not client-returned values.