concurrency-find-toctou
Find, prove, and fix time-of-check to time-of-use (TOCTOU) races: code that checks a condition, then acts as if nothing changed in between. Covers check-then-act in files (exists then open), databases (SELECT then INSERT, find-or-create, read-modify-write), authorization (permission check, later effect), caches (get-or-compute), distributed stores (NATS KV revision, JetStream expected sequence, event-store expected version), and async code (check, await, write). Each finding names the check, the act, the window, who can interleave, the consequence, and the fix. Use when reviewing code for race conditions, duplicate inserts, lost updates, double charges, stale permission checks, flaky tests under parallel load, intermittent 'already exists' errors, when asked 'is this atomic', 'can two requests collide', or 'what if this runs twice', and before adding a mutex, lock, or retry loop. Do not use for: deadlocks or lock ordering, performance tuning, memory-model data races, event model or NATS subject design.
Pinned to revision 411dd5a3eb5d, so it is the text this page describes rather than whatever the author pushed since.
Pre-approved tools experimental
Experimental field. Support varies between clients, so this list is what the author declared, not what your client will enforce.
- AskUserQuestion
- Read
- Write
- Shell
Files
- skills/concurrency-find-toctou/SKILL.md
- skills/concurrency-find-toctou/references/c/atomics.md
- skills/concurrency-find-toctou/references/c/posix-fs.md
- skills/concurrency-find-toctou/references/elixir/ecto.md
- skills/concurrency-find-toctou/references/elixir/ets.md
- skills/concurrency-find-toctou/references/elixir/file.md
- skills/concurrency-find-toctou/references/elixir/genserver.md
- skills/concurrency-find-toctou/references/elixir/registry.md
- skills/concurrency-find-toctou/references/go/database-sql.md
- skills/concurrency-find-toctou/references/go/os.md
- skills/concurrency-find-toctou/references/go/singleflight.md
- skills/concurrency-find-toctou/references/go/sync.md
- skills/concurrency-find-toctou/references/principles/idempotence-absorbs.md
- skills/concurrency-find-toctou/references/principles/lock-moves-the-race.md
- skills/concurrency-find-toctou/references/principles/owner-decides.md
- skills/concurrency-find-toctou/references/principles/read-is-the-past.md
- skills/concurrency-find-toctou/references/principles/retry-wraps-the-write.md
- skills/concurrency-find-toctou/references/principles/serializer-is-named.md
- skills/concurrency-find-toctou/references/principles/write-carries-condition.md
- skills/concurrency-find-toctou/references/python/asyncio.md
- skills/concurrency-find-toctou/references/python/os.md
- skills/concurrency-find-toctou/references/python/psycopg.md
- skills/concurrency-find-toctou/references/python/sqlalchemy.md
- skills/concurrency-find-toctou/references/review/finding-template.md
- skills/concurrency-find-toctou/references/review/fix-catalog.md
- skills/concurrency-find-toctou/references/rust/atomics.md
- skills/concurrency-find-toctou/references/rust/moka-dashmap.md
- skills/concurrency-find-toctou/references/rust/sqlx.md
- skills/concurrency-find-toctou/references/rust/std-fs.md
- skills/concurrency-find-toctou/references/rust/tokio.md
- skills/concurrency-find-toctou/references/surfaces/authorization.md
- skills/concurrency-find-toctou/references/surfaces/cache.md
- skills/concurrency-find-toctou/references/surfaces/database.md
- skills/concurrency-find-toctou/references/surfaces/distributed.md
- skills/concurrency-find-toctou/references/surfaces/filesystem.md
- skills/concurrency-find-toctou/references/surfaces/in-process.md
- skills/concurrency-find-toctou/references/systems/mysql.md
- skills/concurrency-find-toctou/references/systems/nats.md
- skills/concurrency-find-toctou/references/systems/postgres.md
- skills/concurrency-find-toctou/references/systems/redis.md
- skills/concurrency-find-toctou/references/systems/sqlite.md
- skills/concurrency-find-toctou/references/typescript/drizzle.md
- skills/concurrency-find-toctou/references/typescript/event-loop.md
- skills/concurrency-find-toctou/references/typescript/node-fs.md
- skills/concurrency-find-toctou/references/typescript/node-postgres.md
- skills/concurrency-find-toctou/references/typescript/prisma.md
Every link opens the file at its source, pinned to the revision this page describes.