CK
← All projectsCoinkite

COLDCARD firmware

Open-source firmware for COLDCARD Bitcoin signing devices.

BitcoinHardware walletsActive incident
Repository coverage

306 commits in the local evidence base

Every captured commit receives deterministic security triage and a separate communication-quality score. Security candidates and broader second-pass signals receive full-patch Ollama analysis.

70security candidates169second-pass queue36AI analyses
25commits · 30 days
74commits · 60 days
158commits · 180 days
306commits · 365 days
Backfill bands
Aug 5 → Feb 6148 seen2 candidatesComplete
Feb 6 → Jun 684 seen8 candidatesComplete
Jun 6 → Jul 649 seen4 candidatesComplete
Jul 6 → Aug 525 seen4 candidatesComplete
Commit communication

Does the history explain itself?

Message quality measures whether a commit identifies its scope, purpose, rationale, testing, and supporting references. It does not change the security-severity score.

29/100 average clarity
1Strong · 80–100
17Adequate · 60–79
103Thin · 40–59
185Opaque · 0–39
34security candidates with opaque commit messaging
Read the scoring rubric →
Developer activity

Who is changing the project?

Public Git author strings; identities are not independently verified.

DeveloperCommitsCandidatesAnalyzedHigh riskMessage avg.
Peter D. Gray146209215
scgbckbone1464826039
Dmitry Monakhov211073
kdmukai110050
tadeubas600051
dependabot[bot]300079
russeree100060
nvk10000
Analysis record

Published AI watches

Last scanned 27 minutes ago

Moderate 66 AI analysisMessage 50 · Thin
CK CoinkiteCOLDCARD firmware BitcoinHardware wallets

bugfix: detect RNG_SR_SEIS and RNG_SR_SECS, retry safely, and fail closed on persistent faults

This update fixes how the COLDCARD hardware wallet's random-number generator (RNG) handles rare hardware faults. Previously, the device could silently continue using weak or repeated random numbers if the RNG reported a seed error. Now it …

RNG seed-error flag detection added (RNG_SR_SEIS, RNG_SR_SECS)Bounded retry with recovery sequence instead of silent continuationFail-closed escalation on persistent RNG faults
82ced47aby scgbckbone+117−295 files
Vendor flagged security relevance
Moderate 61 AI analysisMessage 50 · Thin
CK CoinkiteCOLDCARD firmware BitcoinHardware wallets

rng: discard 12 words after SEIS clear per RM0432 32.3.7

This commit changes how the COLDCARD hardware wallet's random-number generator (RNG) recovers from a rare 'seed error' condition. The manufacturer is now following an STMicroelectronics guideline to throw away the first 12 random numbers a…

RNG recovery routine previously did not discard post-recovery outputNew behavior follows vendor reference-manual recommendation (RM0432 32.3.7)Randomness is used for cryptographic key material in a hardware wallet
43b21392by scgbckbone+33−22 files
No security note in commit
Informational 15 AI analysisMessage 74 · Adequate
CK CoinkiteCOLDCARD firmware BitcoinHardware wallets

docs: why RNG clock errors don't invalidate RNG_DR

This commit only adds explanatory comments to two source files about why the COLDCARD firmware ignores certain hardware random-number-generator clock-error flags. It does not change any code behavior. The comments cite ST documentation say…

6e403982by scgbckbone+15−02 files
No security note in commit
Critical 91 AI analysisMessage 0 · Opaque
CK CoinkiteCOLDCARD firmware BitcoinHardware wallets

fixes rng

This commit fixes a critical random-number bug in COLDCARD hardware wallets. The device was accidentally using a weak, software-based fallback random generator instead of its secure hardware one when creating Bitcoin seed phrases. Because …

Weak/fallback PRNG silently linked in place of hardware RNGSeed phrase entropy reduction allowing private-key recoveryBuild-system override of upstream rng.o with empty object
ca724637by Peter D. Gray+60−711 files
Vendor flagged security relevance
Low 38 AI analysisMessage 45 · Thin
CK CoinkiteCOLDCARD firmware BitcoinHardware wallets

limit BIP-322 msg length to 330 chars

This commit adds a 330-character limit to BIP-322 proof-of-reserve messages on the COLDCARD hardware wallet. Without the limit, an attacker could craft a very long message that might be used to mislead the user, overflow display buffers, o…

Input length bound added to user-facing signed messageAssertion failure prevents processing of oversized messagesEmpty message already rejected; documentation now also requires non-empty message
b29d2347by scgbckbone+41−13 files
No security note in commit
Moderate 61 AI analysisMessage 45 · Thin
CK CoinkiteCOLDCARD firmware BitcoinHardware wallets

revert SSSP bypass PIN login

This commit reverts a previous security fix. The original fix prevented a 'bypass PIN' (a special trick PIN that hides the wallet) from being used a second time to finish logging in without ever entering the real main PIN. After this rever…

Reverts a prior bugfix that enforced main PIN verification after a trick PIN unlockRemoves has_secrets() check that blocked zero-secret bypass PIN reuse at second login promptChangelog removal of security-relevant bugfix description
542dcd32by scgbckbone+211−163 files
Vendor flagged security relevance
Low 27 AI analysisMessage 45 · Thin
CK CoinkiteCOLDCARD firmware BitcoinHardware wallets

apply note or pwd as b39 passphrase

This commit adds a new feature to the COLDCARD hardware wallet that lets users apply the text of a Secure Note or the value of a Secure Note password as their BIP-39 wallet passphrase. It also tightens how printable ASCII is checked in a f…

New feature exposes stored Secure Notes / Passwords as BIP-39 passphrasesInput validation relies on length, printable-ASCII, and rstrip of trailing whitespace/tab/newlineRefactored text sanitization changes control-flow for message signing and PSBT message warnings
0ef6413cby scgbckbone+223−289 files
No security note in commit
Low 33 AI analysisMessage 73 · Adequate
CK CoinkiteCOLDCARD firmware BitcoinHardware wallets

Fix BBQr share of Unicode text: encode str to UTF-8 before sizing/splitting

This commit fixes a bug in the COLDCARD Q1 hardware wallet where displaying certain QR codes containing non-English or special characters could cause the device to crash with an assertion failure. The fix ensures text is converted to UTF-8…

Assertion failure/crash in QR display pathLength mismatch between codepoints and UTF-8 bytesDenial-of-service-like symptom (device crash on user data display)
97d86c95by Dmitry Monakhov+5−01 file
No security note in commit
Informational 15 AI analysisMessage 0 · Opaque
CK CoinkiteCOLDCARD firmware BitcoinHardware wallets

fix tests

This commit only updates two test files to fix failing tests. It changes test input data and adds an address-format parameter that a helper function now requires. There is no change to the actual COLDCARD firmware or wallet code that users…

eb112eb3by scgbckbone+9−22 files
No security note in commit
Moderate 57 AI analysisMessage 18 · Opaque
CK CoinkiteCOLDCARD firmware BitcoinHardware wallets

bugfix: p2pk

This commit fixes a bug in the COLDCARD hardware wallet that prevented it from correctly signing Bitcoin transactions that spend from 'pay-to-public-key' (P2PK) outputs. P2PK is an older, uncommon output type where coins are locked directl…

Bugfix explicitly described in release notes as 'P2PK signing was broken'P2PK scriptPubKey parsing now supports both compressed and uncompressed public keysPubkey comparison logic corrected for uncompressed P2PK keys
0d04e5e1by scgbckbone+268−328 files
Vendor flagged security relevance
Low 40 AI analysisMessage 28 · Opaque
CK CoinkiteCOLDCARD firmware BitcoinHardware wallets

WIF Store upgrade

This commit upgrades the COLDCARD firmware's WIF Store feature so that individual private keys imported as WIF can sign transactions even when the PSBT file lacks the usual BIP-32 key-path metadata. It adds address/scriptPubKey auto-detect…

Signing path now accepts PSBT inputs with no BIP-32 derivation data if a matching WIF-store pubkey is foundSynthetic subpaths with zero fingerprint are injected for WIF-matched inputsRemoved assertion that key paths must be at least depth 8 (vl >= 8)
1dddd885by scgbckbone+717−849 files
No security note in commit
Low 43 AI analysisMessage 50 · Thin
CK CoinkiteCOLDCARD firmware BitcoinHardware wallets

BIP-322 changes after BIP got in to the complete state

This commit updates COLDCARD's BIP-322 (Bitcoin message signing / proof-of-reserves) implementation to match the finalized BIP-322 specification. The main user-visible change is that the message to be signed must now be embedded directly i…

BIP-322 message now embedded in PSBT and verified against reconstructed to_spend, reducing reliance on external/user-supplied message filesBIP-322 PSBTs are explicitly prevented from being finalized into broadcastable transactionsHSM policy now applies message-signing path restrictions to BIP-322 PSBTs
d656f371by scgbckbone+1106−61015 files
No security note in commit
Informational 15 AI analysisMessage 57 · Thin
CK CoinkiteCOLDCARD firmware BitcoinHardware wallets

docs: index all docs and fix drift vs firmware

This commit is purely a documentation update. It adds missing entries to the docs index, updates outdated examples and menu trees, fixes a broken filename reference in a code comment, and corrects factual details (such as supported models …

8e3bbfdfby scgbckbone+139−8315 files
No security note in commit
Moderate 66 AI analysisMessage 28 · Opaque
CK CoinkiteCOLDCARD firmware BitcoinHardware wallets

bundle small fixes

This is a large bundle of bug fixes for the COLDCARD hardware wallet firmware. Most changes fix user-interface crashes ('yikes'), incorrect error messages, or policy edge cases rather than a single critical vulnerability. The most security…

HSM mode now disables NFC and Virtual Disk peripherals to reduce USB/NFC attack surfaceSingle-Signer Spending Policy unlock no longer accepts a zero-secret bypass PIN as the 'main PIN'OP_RETURN and non-standard scripts are no longer hidden as 'null-data' during transaction review
c36eac23by scgbckbone+1486−28548 files
Vendor flagged security relevance
Low 40 AI analysisMessage 35 · Opaque
CK CoinkiteCOLDCARD firmware BitcoinHardware wallets

final solution can_cancel=True

This commit changes how number-entry prompts behave across the COLDCARD wallet interface. Previously, many prompts did not allow the user to cancel, so pressing the cancel button could be misread as entering '0' and the operation would con…

Default behavior change: numeric entry dialogs now allow cancellation by defaultMultiple sensitive flows no longer treat cancel as confirmation/default valueNew regression tests assert cancel preserves prior menu state
300323f1by scgbckbone+114−4913 files
No security note in commit
Low 48 AI analysisMessage 45 · Thin
CK CoinkiteCOLDCARD firmware BitcoinHardware wallets

bugfix: Delta Mode Trick PIN restore from backup

This commit fixes a bug where a special security feature called 'Delta Mode Trick PIN' was not being restored when a user restored their Coldcard wallet from a backup. A Trick PIN is a decoy PIN that can do things like show a fake wallet o…

Functional bug in security feature (Trick PIN restore)Silent failure due to bare exception handlerMismatch between function return value and caller (tuple unpack)
be614dabby scgbckbone+235−1306 files
Vendor flagged security relevance
Informational 0 AI analysisMessage 18 · Opaque
CK CoinkiteCOLDCARD firmware BitcoinHardware wallets

new bootloader

This commit adds a new pre-built bootloader release (version 3.3.0) for the COLDCARD Mk4 hardware wallet. It consists of binary firmware files and a hash manifest, plus a disassembly listing. There is no source code change, no vulnerabilit…

02b5a756by Peter D. Gray+34698−05 files
No security note in commit
Informational 21 AI analysisMessage 0 · Opaque
CK CoinkiteCOLDCARD firmware BitcoinHardware wallets

Mk hardware

This commit adds support for a new COLDCARD hardware revision, the Mk5. It is a routine product-enablement patch: it teaches the firmware, bootloader, build system, simulator, and signing tools to recognize and run on Mk5 devices. There is…

No security-relevant signals detected in the diff.Change is hardware bring-up / product enablement only.No fixes for memory corruption, authentication bypass, cryptographic flaws, or privilege escalation.
38553d1aby Peter D. Gray+728−27643 files
No security note in commit
Moderate 59 AI analysisMessage 0 · Opaque
CK CoinkiteCOLDCARD firmware BitcoinHardware wallets

WIF Store

This commit adds a new 'WIF Store' feature to the COLDCARD firmware. It lets users import external Bitcoin private keys (in WIF format) and use them to sign PSBT transactions and messages, alongside the device's normal seed-derived keys. T…

New feature adds persistent storage of arbitrary private keys in device settingsPSBT signing path now branches on whether a required pubkey is in the WIF storeAddress ownership verification now recognizes WIF-store addresses as 'ours'
9b131b2eby scgbckbone+1243−8222 files
No security note in commit
Low 28 AI analysisMessage 50 · Thin
CK CoinkiteCOLDCARD firmware BitcoinHardware wallets

bugfix: do not offer to show QR code of TXID if txn is not finalized

This commit fixes a small user-interface bug in the COLDCARD hardware wallet. Previously, after signing a transaction that was not yet finalized, the device still offered a menu option to display a QR code of the transaction ID (TXID). Bec…

UI-only bugfix with no cryptographic or authorization bypassPrevents display of potentially invalid/incomplete TXID QR code before transaction finalizationNo buffer overflow, injection, or privilege escalation signals in diff
c19be4f4by scgbckbone+20−22 files
No security note in commit
Repository ledger

Explore captured commits

Expand any commit for its author, full message, clarity score, changed files, triage signals, analysis, and source link.

Security candidateQ: brick into forever calculatorby scgbckbone · 1929067a · Sep 22, 2025 · 3 filesMessage 45 · ThinTriage 10Details
Commit message · scgbckbone

Q: brick into forever calculator

45/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Why it was queued
authentication path
Security candidateadd "Restore from XOR" to Temporary Seed menuby scgbckbone · 2b115059 · Sep 22, 2025 · 1 fileMessage 25 · OpaqueTriage 15Details
Commit message · scgbckbone

add "Restore from XOR" to Temporary Seed menu

25/100 · OpaqueMessage clarity
✓ Descriptive subject✓ Names a concrete action or component! No meaningful explanatory body! Contains work-in-progress language! Opaque security-relevant change
Why it was queued
seed or entropy path
Security candidatetxout explorer do not yikes on big QRsby scgbckbone · 0237fd29 · Sep 18, 2025 · 8 filesMessage 45 · ThinLow 36Details
Commit message · scgbckbone

txout explorer do not yikes on big QRs

45/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Why it was queued
signing or wallet pathauthentication path
AI analysis · Low 36/100

This update fixes a user-interface crash in the COLDCARD hardware wallet when it tries to display very large QR codes. Before the change, certain long transaction outputs (for example, OP_RETURN data or unusual scripts) could make the on-device QR generator fail and throw an error, interrupting transaction review. The patch catches that failure, shows a 'QR too big' placeholder instead, and lets the user keep reviewing the transaction. It is a denial-of-service-style reliability fix rather than a theft-of-funds vulnerability.

Security candidaterestore backup via USBby scgbckbone · de043f22 · Sep 18, 2025 · 8 filesMessage 28 · OpaqueTriage 10Details
Commit message · scgbckbone

restore backup via USB

28/100 · OpaqueMessage clarity
✓ Subject identifies a change! No meaningful explanatory body! Opaque security-relevant change
Why it was queued
authentication path
Security candidatemore testsby scgbckbone · 8ceb6a46 · Sep 16, 2025 · 2 filesMessage 0 · OpaqueTriage 15Details
Commit message · scgbckbone

more tests

0/100 · OpaqueMessage clarity
✓ Mentions testing or verification! Very short subject! Too few words to establish purpose! No meaningful explanatory body! Opaque security-relevant change
Why it was queued
cryptography-sensitive path
Security candidatetestingby Peter D. Gray · 76cc136a · Sep 16, 2025 · 6 filesMessage 0 · OpaqueTriage 15Details
Commit message · Peter D. Gray

testing

0/100 · OpaqueMessage clarity
✓ Mentions testing or verification! Very short subject! Too few words to establish purpose! No meaningful explanatory body! Opaque security-relevant change
Why it was queued
seed or entropy path
Security candidatenitsby Peter D. Gray · 1a1daf32 · Sep 16, 2025 · 3 filesMessage 0 · OpaqueTriage 10Details
Commit message · Peter D. Gray

nits

0/100 · OpaqueMessage clarity
! Very short subject! Too few words to establish purpose! No meaningful explanatory body! Opaque security-relevant change
Why it was queued
authentication path
Security candidatebug noteby Peter D. Gray · 6b1c38fe · Sep 16, 2025 · 1 fileMessage 0 · OpaqueTriage 12Details
Commit message · Peter D. Gray

bug note

0/100 · OpaqueMessage clarity
! Very short subject! Too few words to establish purpose! No meaningful explanatory body! Opaque security-relevant change
Why it was queued
boot or update path
Security candidateword entryby Peter D. Gray · 43544f4f · Sep 16, 2025 · 3 filesMessage 0 · OpaqueTriage 15Details
Commit message · Peter D. Gray

word entry

0/100 · OpaqueMessage clarity
! Very short subject! Too few words to establish purpose! No meaningful explanatory body! Opaque security-relevant change
Why it was queued
seed or entropy path
Security candidatecleanupsby Peter D. Gray · 609af3a2 · Sep 16, 2025 · 2 filesMessage 0 · OpaqueTriage 10Details
Commit message · Peter D. Gray

cleanups

0/100 · OpaqueMessage clarity
! Very short subject! Too few words to establish purpose! No meaningful explanatory body! Opaque security-relevant change
Why it was queued
authentication path
Security candidatenitsby scgbckbone · 0420d4b6 · Sep 16, 2025 · 4 filesMessage 0 · OpaqueTriage 10Details
Commit message · scgbckbone

nits

0/100 · OpaqueMessage clarity
! Very short subject! Too few words to establish purpose! No meaningful explanatory body! Opaque security-relevant change
Why it was queued
authentication path
Security candidatespending policy implementedby Peter D. Gray · f12457cb · Sep 16, 2025 · 12 filesMessage 35 · OpaqueTriage 10Details
Commit message · Peter D. Gray

spending policy implemented

35/100 · OpaqueMessage clarity
✓ Descriptive subject! No meaningful explanatory body! Opaque security-relevant change
Why it was queued
authentication path
Security candidatehobbled mode support for spending policyby Peter D. Gray · c3a454ab · Sep 16, 2025 · 13 filesMessage 45 · ThinLow 37Details
Commit message · Peter D. Gray

hobbled mode support for spending policy

45/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Why it was queued
seed or entropy pathauthentication path
AI analysis · Low 37/100

This commit adds a new 'hobbled mode' feature to the COLDCARD hardware wallet firmware. It lets a user set a 'Spending Policy' that restricts what the device can do even when the main PIN is entered. The policy can limit access to seed words, backups, secure notes, and certain signing operations. A special bypass PIN is required to disable or change the policy. The change is a feature addition, not a fix for a known vulnerability, and the commit message and code comments describe it as a user-controlled self-protection mechanism.

Security candidatetest deltamode worksby Peter D. Gray · 7daa67cc · Sep 16, 2025 · 4 filesMessage 38 · OpaqueInformational 15Details
Commit message · Peter D. Gray

test deltamode works

38/100 · OpaqueMessage clarity
✓ Subject identifies a change✓ Mentions testing or verification! No meaningful explanatory body! Opaque security-relevant change
Why it was queued
access control
AI analysis · Informational 15/100

This commit only adds automated tests for an existing firmware feature called 'deltamode' trick PINs. It does not change the actual COLDCARD firmware code that users run. The tests confirm that when a deltamode trick PIN is active, the device produces an intentionally invalid Bitcoin signature and does not wipe the seed. No security bug is introduced or fixed here.

Security candidateMk4 SSSP Word Checkby scgbckbone · d15de032 · Sep 16, 2025 · 2 filesMessage 28 · OpaqueTriage 15Details
Commit message · scgbckbone

Mk4 SSSP Word Check

28/100 · OpaqueMessage clarity
✓ Subject identifies a change! No meaningful explanatory body! Opaque security-relevant change
Why it was queued
seed or entropy path
Security candidatenitsby Peter D. Gray · 3f24307d · Sep 16, 2025 · 2 filesMessage 0 · OpaqueTriage 15Details
Commit message · Peter D. Gray

nits

0/100 · OpaqueMessage clarity
! Very short subject! Too few words to establish purpose! No meaningful explanatory body! Opaque security-relevant change
Why it was queued
seed or entropy path
Security candidateSSSP update menu tree & related adjustmentsby scgbckbone · 372954e4 · Sep 16, 2025 · 5 filesMessage 45 · ThinTriage 15Details
Commit message · scgbckbone

SSSP update menu tree & related adjustments

45/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Why it was queued
seed or entropy path
Security candidateforgotten pinby Peter D. Gray · 8d84979d · Sep 16, 2025 · 1 fileMessage 18 · OpaqueTriage 0Details
Commit message · Peter D. Gray

forgotten pin

18/100 · OpaqueMessage clarity
✓ Subject identifies a change! Too few words to establish purpose! No meaningful explanatory body! Opaque security-relevant change
Why it was queued
access controldocumentation-only discount
Security candidatebugfix: enter vfs after creating itby scgbckbone · 9a4d3986 · Sep 16, 2025 · 4 filesMessage 45 · ThinTriage 15Details
Commit message · scgbckbone

bugfix: enter vfs after creating it

45/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Why it was queued
seed or entropy path
Security candidateClarify allowed usage of Seed XOR standard and nameby kdmukai · 3eb99272 · Aug 29, 2025 · 1 fileMessage 50 · ThinTriage 0Details
Commit message · kdmukai

Clarify allowed usage of Seed XOR standard and name

50/100 · ThinMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Why it was queued
seed or entropy pathdocumentation-only discount