The program answers with these codes. The app translates them into a sentence about the action at hand; this page lists the codes for clients that call the program directly.
| Code | Name | Meaning | What to do |
|---|---|---|---|
| 6000 | Unauthorized | The signer may not take this action | Sign with the issuer, verifier or admin the action needs |
| 6001 | Paused | Writ is paused | Wait for governance to resume |
| 6002 | VerifierInactive | The verifier is inactive, or the credential's generation is stale | Verify again with an active verifier |
| 6003 | CredentialInvalid | The credential expired or was revoked | Renew the credential |
| 6004 | StaleRevision | The expected epoch or generation moved; or a pass would end before the one it replaces | Refresh and retry; renew passes with a later expiry |
| 6005 | InvalidExpiry | A time or expiry is out of range | Choose an expiry within the rule's and credential's limits |
| 6006 | InvalidCommitment | A commitment is zero or not a canonical BN254 scalar | Recompute the commitments |
| 6007 | UnsupportedPredicate | A predicate or circuit version is not supported | Use 1 to 4 groups that each read an attribute, within the bounds |
| 6008 | InvalidCircuit | The verifying key is incomplete, fixed, or has another digest | Finish or check the key upload |
| 6009 | InvalidProof | The Groth16 proof failed | Prove from the credential file of the current epoch |
| 6010 | InvalidPass | The pass expired, is stale, or belongs to another wallet or rule set | Prove the rule set again |
| 6011 | NotTransferring | The hook ran outside a Token-2022 transfer | Transfer through Token-2022 |
| 6012 | InvalidMint | The mint does not fit the binding profile | Use a zero-supply mint with only Writ's immutable hook, owned by the issuer |
| 6013 | InvalidAccount | An account, owner or layout is not what Writ expects | Use standard token accounts with an immutable owner |
| 6014 | ArithmeticOverflow | An amount overflowed | Use a smaller amount |
| 6015 | UnsupportedMintExtension | The mint has extensions besides TransferHook | Create a mint with only the TransferHook extension |
| 6016 | PassFeeUnfunded | The rule set's pass funds cannot cover the pass fee | The rule set's issuer adds pass funds |
| 6017 | PassFundsInsufficient | A withdrawal is more than the rule set's pass funds | Withdraw at most the pass funds shown |
A missing account surfaces as Anchor's own AccountNotInitialized (3012) for the account named in the logs, for example a receiving wallet's destination_rule_pass when it has never proved the rule set, or protocol before governance has set the pass fee.