The workflow sets no permissions:, and actions/checkout leaves the job's token in .git/config, where any later step can read it.
Nothing is exploitable today: the token is already read-only (the job logs show Contents: read, Metadata: read, Packages: read) and no step writes with it. Setting permissions: contents: read and persist-credentials: false makes that explicit, for forks too.
Pinning actions by hash is left out, after #35754.
libsecp256k1 wants to stay in sync with Core here (bitcoin-core/secp256k1#1959), and I am opening the same change there.