{
  "type": "failure-mode",
  "name": "Writing a custom precompile and forgetting what that means",
  "slug": "writing-a-custom-precompile-and-forgetting-what-that-means",
  "section": {
    "id": "frameworks",
    "number": "02",
    "title": "Choosing a framework",
    "url": "https://zkpick.com/frameworks/"
  },
  "url": "https://zkpick.com/frameworks/failure-modes/writing-a-custom-precompile-and-forgetting-what-that-means/",
  "markdown": "https://zkpick.com/md/frameworks/failure-modes/writing-a-custom-precompile-and-forgetting-what-that-means.md",
  "detail": "A zkVM is chosen partly to avoid hand-written circuits, and then a custom precompile is added for performance. That precompile is a hand-written circuit with all the attendant risk — but it is often reviewed as an optimisation rather than as new soundness-critical code.",
  "mitigation": "Scope custom precompiles into the audit explicitly, as circuit code. Precompiles are a recurring source of soundness bugs precisely because they are written for speed.",
  "relatedOptions": [],
  "updated": "2026-09-12",
  "version": "1.3",
  "canonical": "https://zkpick.com/frameworks/failure-modes/writing-a-custom-precompile-and-forgetting-what-that-means/",
  "license": "https://creativecommons.org/licenses/by/4.0/",
  "authors": [
    "MarketComp"
  ]
}