{
  "$schema": "https://degreesofsatoshi.com/encyclopedia/schemas/article-v1.json",
  "schemaVersion": "1.0.0",
  "id": "permit-signatures",
  "canonical": "https://degreesofsatoshi.com/encyclopedia/permit-signatures/",
  "collection": "ethereum",
  "title": "Permit signatures: authorizing token spending without an approval transaction",
  "description": "Understand ERC-2612 signed allowances, including spender, amount, nonce and deadline, and why signing without gas can still authorize token spending.",
  "aliases": [],
  "dates": {
    "published": "2026-10-02",
    "modified": "2026-10-02",
    "verified": "2026-10-02T18:12:41.505Z",
    "dataAsOf": "2026-10-02"
  },
  "authorship": {
    "publisher": "Degrees of Satoshi editorial project",
    "process": "AI-assisted research and drafting with a separate automated source-verification pass; no external expert or named human review is implied."
  },
  "quickAnswer": {
    "text": "An ERC-2612 permit is a signed instruction that can set an ERC-20 allowance when submitted to a supporting token contract. It names an owner, spender, value, nonce and deadline within a signing domain. Signing does not itself transfer tokens, but an accepted permit can authorize later spending; other permit systems may use different rules.",
    "claimId": "permit-signatures-quick-answer",
    "sourceIds": [
      "eip2612",
      "erc20"
    ]
  },
  "keyFacts": [
    {
      "label": "Submission",
      "value": "Any caller can submit a valid ERC-2612 permit; the owner’s signature supplies authorization.",
      "sourceIds": [
        "eip2612"
      ],
      "id": "submission",
      "claimId": "permit-signatures-fact-submission"
    },
    {
      "label": "Nonce",
      "value": "Acceptance increments the owner’s permit nonce.",
      "sourceIds": [
        "eip2612"
      ],
      "id": "nonce",
      "claimId": "permit-signatures-fact-nonce"
    },
    {
      "label": "Deadline",
      "value": "The deadline limits permit submission validity, not automatically the lifetime of the resulting allowance.",
      "sourceIds": [
        "eip2612"
      ],
      "id": "deadline",
      "claimId": "permit-signatures-fact-deadline"
    }
  ],
  "prerequisites": [
    "ethereum-token-approvals",
    "eip-712-typed-data"
  ],
  "sections": [
    {
      "id": "allowance",
      "heading": "A gasless signature can create a lasting permission",
      "sourceIds": [
        "eip2612",
        "erc20"
      ],
      "paragraphs": [
        "A valid permit sets the specified allowance. Afterward, the spender can use the token’s transferFrom behavior within that authorization, subject to token rules and balance.",
        "The permit deadline is checked when permit is accepted. ERC-2612 does not turn the resulting allowance into an automatically expiring approval at that same time."
      ]
    },
    {
      "id": "check",
      "heading": "Inspect the exact signed scope",
      "sourceIds": [
        "eip2612"
      ],
      "paragraphs": [
        "Check the token and chain domain, spender, raw amount interpreted with the token’s decimals, nonce and deadline. A large numeric allowance can authorize much more than one intended swap.",
        "Permit designs are not interchangeable. The ERC-2612 document describes differences from DAI-style permits, and other systems can authorize different actions. A wallet label saying “permit” does not identify all semantics."
      ]
    },
    {
      "id": "race",
      "heading": "Submission order can affect a workflow",
      "sourceIds": [
        "eip2612"
      ],
      "paragraphs": [
        "Someone holding the signed message can submit it before the intended relayer. The allowance effect may be the same, but a later workflow that assumes the nonce is unused can fail.",
        "An unsubmitted signature should be treated as an outstanding authorization while its conditions remain satisfiable. Rejecting a website popup afterward does not erase an already issued signature."
      ]
    }
  ],
  "faq": [
    {
      "question": "Does a permit deadline revoke an allowance that was already created?",
      "answer": "Not under ERC-2612 itself. The deadline controls whether the permit can be accepted; the resulting allowance follows the token’s allowance rules until changed or spent.",
      "sourceIds": [
        "eip2612",
        "erc20"
      ]
    }
  ],
  "claims": [
    {
      "id": "permit-signatures-quick-answer",
      "articleSlug": "permit-signatures",
      "statement": "An ERC-2612 permit is a signed instruction that can set an ERC-20 allowance when submitted to a supporting token contract. It names an owner, spender, value, nonce and deadline within a signing domain. Signing does not itself transfer tokens, but an accepted permit can authorize later spending; other permit systems may use different rules.",
      "sourceIds": [
        "source-1f53bb744ddddb6b",
        "source-ac4ad503a55127bb"
      ],
      "sourceLocators": [
        {
          "sourceId": "source-1f53bb744ddddb6b",
          "locator": "Specification; Security Considerations"
        },
        {
          "sourceId": "source-ac4ad503a55127bb",
          "locator": "totalSupply; balanceOf; transfer; decimals; approve; allowance; transferFrom; Transfer"
        }
      ],
      "scope": {
        "collection": "ethereum",
        "dataAsOf": "2026-10-02",
        "blockHeight": null
      },
      "qualification": "",
      "evidenceStatus": "documented",
      "verification": {
        "status": "verified",
        "method": "independent automated source review",
        "checkedAt": "2026-10-02T18:12:41.505Z",
        "reviewer": "Codex independent automated reviewer /root/verify_ethereum_100",
        "notes": [
          "Read ERC-2612 permit allowance assignment, owner nonce increment, blocktime <= deadline, signature/domain checks and caller independence.",
          "Confirmed deadline governs acceptance, not resulting allowance expiration; DAI/Stake differences and front-running concerns are explicit in the standard. Later composite-workflow failure is identified as an application consequence."
        ]
      }
    },
    {
      "id": "permit-signatures-fact-submission",
      "articleSlug": "permit-signatures",
      "statement": "Submission: Any caller can submit a valid ERC-2612 permit; the owner’s signature supplies authorization.",
      "sourceIds": [
        "source-1f53bb744ddddb6b"
      ],
      "sourceLocators": [
        {
          "sourceId": "source-1f53bb744ddddb6b",
          "locator": "Specification; Security Considerations"
        }
      ],
      "scope": {
        "collection": "ethereum",
        "dataAsOf": "2026-10-02",
        "blockHeight": null
      },
      "qualification": "",
      "evidenceStatus": "documented",
      "verification": {
        "status": "verified",
        "method": "independent automated source review",
        "checkedAt": "2026-10-02T18:12:41.505Z",
        "reviewer": "Codex independent automated reviewer /root/verify_ethereum_100",
        "notes": [
          "Read ERC-2612 permit allowance assignment, owner nonce increment, blocktime <= deadline, signature/domain checks and caller independence.",
          "Confirmed deadline governs acceptance, not resulting allowance expiration; DAI/Stake differences and front-running concerns are explicit in the standard. Later composite-workflow failure is identified as an application consequence."
        ]
      }
    },
    {
      "id": "permit-signatures-fact-nonce",
      "articleSlug": "permit-signatures",
      "statement": "Nonce: Acceptance increments the owner’s permit nonce.",
      "sourceIds": [
        "source-1f53bb744ddddb6b"
      ],
      "sourceLocators": [
        {
          "sourceId": "source-1f53bb744ddddb6b",
          "locator": "Specification; Security Considerations"
        }
      ],
      "scope": {
        "collection": "ethereum",
        "dataAsOf": "2026-10-02",
        "blockHeight": null
      },
      "qualification": "",
      "evidenceStatus": "documented",
      "verification": {
        "status": "verified",
        "method": "independent automated source review",
        "checkedAt": "2026-10-02T18:12:41.505Z",
        "reviewer": "Codex independent automated reviewer /root/verify_ethereum_100",
        "notes": [
          "Read ERC-2612 permit allowance assignment, owner nonce increment, blocktime <= deadline, signature/domain checks and caller independence.",
          "Confirmed deadline governs acceptance, not resulting allowance expiration; DAI/Stake differences and front-running concerns are explicit in the standard. Later composite-workflow failure is identified as an application consequence."
        ]
      }
    },
    {
      "id": "permit-signatures-fact-deadline",
      "articleSlug": "permit-signatures",
      "statement": "Deadline: The deadline limits permit submission validity, not automatically the lifetime of the resulting allowance.",
      "sourceIds": [
        "source-1f53bb744ddddb6b"
      ],
      "sourceLocators": [
        {
          "sourceId": "source-1f53bb744ddddb6b",
          "locator": "Specification; Security Considerations"
        }
      ],
      "scope": {
        "collection": "ethereum",
        "dataAsOf": "2026-10-02",
        "blockHeight": null
      },
      "qualification": "",
      "evidenceStatus": "documented",
      "verification": {
        "status": "verified",
        "method": "independent automated source review",
        "checkedAt": "2026-10-02T18:12:41.505Z",
        "reviewer": "Codex independent automated reviewer /root/verify_ethereum_100",
        "notes": [
          "Read ERC-2612 permit allowance assignment, owner nonce increment, blocktime <= deadline, signature/domain checks and caller independence.",
          "Confirmed deadline governs acceptance, not resulting allowance expiration; DAI/Stake differences and front-running concerns are explicit in the standard. Later composite-workflow failure is identified as an application consequence."
        ]
      }
    }
  ],
  "sources": [
    {
      "id": "eip2612",
      "label": "Permit Extension for EIP-20 Signed Approvals",
      "publisher": "Ethereum Improvement Proposals",
      "url": "https://eips.ethereum.org/EIPS/eip-2612",
      "locator": "Specification; Security Considerations",
      "note": "Signed token allowances, deadlines, nonces and domain checks.",
      "version": "EIP/ERC-2612; retrieved document hash recorded",
      "checkedAt": "2026-10-02T17:03:42.295Z",
      "contentSha256": "aa208d281cac5dbb182656bc7a3feab982df5c5df9e2f6dfa9b9efb5fc578ed1",
      "recordId": "source-1f53bb744ddddb6b"
    },
    {
      "id": "erc20",
      "label": "ERC-20 Token Standard",
      "publisher": "Ethereum Improvement Proposals",
      "url": "https://eips.ethereum.org/EIPS/eip-20",
      "locator": "totalSupply; balanceOf; transfer; decimals; approve; allowance; transferFrom; Transfer",
      "note": "Token supply, displayed units and balance accounting.",
      "version": "ERC-20",
      "checkedAt": "2026-10-02T17:03:45.826Z",
      "contentSha256": "98bda5e4707841a68684879878c4c165fdaa47d89ed69ebf232ab9be06ff050e",
      "recordId": "source-ac4ad503a55127bb"
    }
  ],
  "related": {
    "articles": [
      "signature-replay-attacks",
      "ethereum-wallet-requests",
      "erc-20-tokens"
    ],
    "dossiers": [],
    "wallets": []
  },
  "revisionHistory": [
    {
      "date": "2026-10-02",
      "kind": "published",
      "summary": "First publication after primary-source research and independent automated verification."
    }
  ],
  "citation": "Degrees of Satoshi editorial project. “Permit signatures: authorizing token spending without an approval transaction.” Published 2026-10-02; updated 2026-10-02. https://degreesofsatoshi.com/encyclopedia/permit-signatures/"
}
