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 queue83AI 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. Gray1462021315
scgbckbone1464859139
Dmitry Monakhov211073
kdmukai111050
tadeubas600051
dependabot[bot]300079
russeree101060
nvk10000
Analysis record

Published AI watches

Last scanned 49 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
Low 29 AI analysisMessage 50 · Thin
CK CoinkiteCOLDCARD firmware BitcoinHardware wallets

standalone encrypted backups for Secure Notes & Passwords

This commit adds a new feature to the COLDCARD firmware: encrypted backups for Secure Notes & Passwords. Previously, exporting notes and passwords to a microSD card produced an unencrypted JSON file. Now the device can encrypt that export …

New encryption feature for previously cleartext notes/password exportsRefactoring of backup password and 7z encryption code into reusable helpersAddition of inner_ext parameter to backup decryption to support .json payloads
d58fdfd5by scgbckbone+467−1246 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
High 78 AI analysisMessage 50 · Thin
CK CoinkiteCOLDCARD firmware BitcoinHardware wallets

Reject witness-only UTXO for legacy inputs; Suppress fee for unverified witness UTXOs;normalize legacy inputs to proper utxo

This update fixes a bug in the COLDCARD hardware wallet where a malicious or malformed Bitcoin transaction file (PSBT) could trick the device into using the wrong amount of money for a non-SegWit (legacy) input. Specifically, if the file o…

Fixes legacy input amount spoofing via witness-only UTXORejects PSBT inputs that provide only PSBT_IN_WITNESS_UTXO for non-SegWit inputs the device must signPrefers full non_witness_utxo over witness_utxo when both are present
59eb529aby scgbckbone+224−656 files
Vendor flagged security relevance
Low 42 AI analysisMessage 28 · Opaque
CK CoinkiteCOLDCARD firmware BitcoinHardware wallets

bugfix: 1of1 multisig

This commit fixes a bug in the COLDCARD hardware wallet firmware that prevented signing of 1-of-1 multisignature transactions. The change also hardens how the wallet detects single-key P2SH-wrapped SegWit inputs so it no longer misclassifi…

PSBT input classification bug fixed1-of-1 multisig signing restoredP2SH-P2WPKH now requires exactly one BIP32 subpath
6fd256dbby scgbckbone+45−204 files
No security note in commit
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 28 · Opaque
CK CoinkiteCOLDCARD firmware BitcoinHardware wallets

stabilize tests

This commit only changes test files in the COLDCARD firmware repository. It adds setup steps (like returning to the home screen before tests), updates menu navigation to match renamed menu items, and makes test assertions more flexible. Th…

74d34cfcby scgbckbone+69−555 files
No security note in commit
Informational 15 AI analysisMessage 0 · Opaque
CK CoinkiteCOLDCARD firmware BitcoinHardware wallets

test nits

This commit only touches test helper code in the COLDCARD firmware repository. It fixes small test issues: allowing PSBT parsing from string input, validating a setting name in a hobble-mode test, and correctly setting sequence numbers and…

f5a1ef32by scgbckbone+17−104 files
No security note in commit
Low 29 AI analysisMessage 60 · Adequate
CK CoinkiteCOLDCARD firmware BitcoinHardware wallets

testing: block_h bumped for SSSP too, when CCC overrides SSSP block

This commit fixes a bookkeeping bug in the COLDCARD firmware's transaction-signing logic. When two optional security features—SSSP (a spending velocity limit) and CCC (a policy that can override SSSP)—are both active, the block-height trac…

State-synchronization fix between two policy enforcement featuresRegression test added for override interactionNo mention of CVE, advisory, or security disclosure in commit or diff
841e4433by scgbckbone+60−44 files
No security note in commit
Informational 15 AI analysisMessage 55 · Thin
CK CoinkiteCOLDCARD firmware BitcoinHardware wallets

testing: cope with bitcoin core v30

This commit only updates the project's automated test harness to work with newer versions of Bitcoin Core (specifically version 30). It changes how tests detect Bitcoin Core's version, handle removed legacy wallet features, and adjust an e…

38616234by scgbckbone+11−62 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
Repository ledger

Explore captured commits

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

AI review queuededitby Peter D. Gray · 9e762d29 · Sep 18, 2025 · 1 fileMessage 0 · OpaqueTriage 0Details
Commit message · Peter D. Gray

edit

0/100 · OpaqueMessage clarity
! Very short subject! Too few words to establish purpose! No meaningful explanatory body
Why it was queued
documentation-only discountsecond-pass: opaque commit message
Security candidaterestore backup via USBby scgbckbone · de043f22 · Sep 18, 2025 · 8 filesMessage 28 · OpaqueModerate 59Details
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
AI analysis · Moderate 59/100

This commit adds a new USB command that lets a connected computer restore a COLDCARD wallet backup onto the device. The user must confirm on the device screen, and the backup file's checksum is verified. However, because restoring a backup replaces the wallet seed, the feature is security-sensitive. The commit also blocks this command in HSM (unattended signing) mode, which is a good protective measure. There is no direct evidence of a vulnerability in the patch, but the feature increases the attack surface available over USB.

AI review queuededitsby Peter D. Gray · 20ce5f2b · Sep 18, 2025 · 2 filesMessage 0 · OpaqueTriage 0Details
Commit message · Peter D. Gray

edits

0/100 · OpaqueMessage clarity
! Very short subject! Too few words to establish purpose! No meaningful explanatory body
Why it was queued
second-pass: opaque commit message
Lower-priorityrename files on SD card via List Filesby scgbckbone · 3353f3d4 · Sep 18, 2025 · 3 filesMessage 45 · ThinTriage 0Details
Commit message · scgbckbone

rename files on SD card via List Files

45/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Lower-prioritylower Mk4 default wrap-around from 16 to 10 (same as Q)by scgbckbone · 4d2349fe · Sep 18, 2025 · 5 filesMessage 50 · ThinTriage 0Details
Commit message · scgbckbone

lower Mk4 default wrap-around from 16 to 10 (same as Q)

50/100 · ThinMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
AI review queuedlittle bugby Peter D. Gray · 54dcf2dc · Sep 17, 2025 · 2 filesMessage 0 · OpaqueTriage 7Details
Commit message · Peter D. Gray

little bug

0/100 · OpaqueMessage clarity
! Very short subject! Too few words to establish purpose! No meaningful explanatory body
Why it was queued
parser or protocol pathsecond-pass: opaque commit messagesecond-pass: security-sensitive path
Lower-prioritybugfix: premature wipe while exporting secret material via NFC - only first export loop (0th) was actually sending databy scgbckbone · bbac20b4 · Sep 17, 2025 · 2 filesMessage 50 · ThinTriage 0Details
Commit message · scgbckbone

bugfix: premature wipe while exporting secret material via NFC - only first export loop (0th) was actually sending data

50/100 · ThinMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Lower-prioritydecouple wiping NFC chip from `ux_animation` routineby scgbckbone · 3291faa3 · Sep 17, 2025 · 1 fileMessage 50 · ThinTriage 0Details
Commit message · scgbckbone

decouple wiping NFC chip from `ux_animation` routine

50/100 · ThinMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Lower-prioritybugfix: selftest MicroSD testby scgbckbone · 98420f8a · Sep 17, 2025 · 2 filesMessage 45 · ThinTriage 0Details
Commit message · scgbckbone

bugfix: selftest MicroSD test

45/100 · ThinMessage clarity
✓ Descriptive subject✓ Mentions testing or verification! No meaningful explanatory body
AI review queuedversion bumpby Peter D. Gray · 5b26b306 · Sep 16, 2025 · 3 filesMessage 18 · OpaqueTriage 0Details
Commit message · Peter D. Gray

version bump

18/100 · OpaqueMessage clarity
✓ Subject identifies a change! Too few words to establish purpose! No meaningful explanatory body
Why it was queued
second-pass: opaque commit message
AI review queuedtest casesby Peter D. Gray · d053398a · Sep 16, 2025 · 4 filesMessage 0 · OpaqueTriage 0Details
Commit message · Peter D. Gray

test cases

0/100 · OpaqueMessage clarity
✓ Mentions testing or verification! Very short subject! Too few words to establish purpose! No meaningful explanatory body
Why it was queued
second-pass: opaque commit message
AI review queuedplanningby Peter D. Gray · d3caf632 · Sep 16, 2025 · 1 fileMessage 0 · OpaqueTriage 0Details
Commit message · Peter D. Gray

planning

0/100 · OpaqueMessage clarity
! Very short subject! Too few words to establish purpose! No meaningful explanatory body
Why it was queued
second-pass: opaque commit message
AI review queuedmoreby Peter D. Gray · a4c7f95d · Sep 16, 2025 · 1 fileMessage 0 · OpaqueTriage 0Details
Commit message · Peter D. Gray

more

0/100 · OpaqueMessage clarity
! Very short subject! Too few words to establish purpose! No meaningful explanatory body
Why it was queued
second-pass: opaque commit message
AI review queuedtidyby Peter D. Gray · 00b2f67d · Sep 16, 2025 · 1 fileMessage 0 · OpaqueTriage 0Details
Commit message · Peter D. Gray

tidy

0/100 · OpaqueMessage clarity
! Very short subject! Too few words to establish purpose! No meaningful explanatory body
Why it was queued
second-pass: opaque commit message
AI review queuedfix0by scgbckbone · 6abb2444 · Sep 16, 2025 · 2 filesMessage 0 · OpaqueTriage 0Details
Commit message · scgbckbone

fix0

0/100 · OpaqueMessage clarity
! Very short subject! Too few words to establish purpose! No meaningful explanatory body
Why it was queued
second-pass: opaque commit message
Security candidatenitsby Peter D. Gray · 1a1daf32 · Sep 16, 2025 · 3 filesMessage 0 · OpaqueInformational 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
authentication path
AI analysis · Informational 15/100

This commit contains only trivial non-code changes: a comment rewording, a stylistic Python list change with identical behavior, a typo fix in a user-facing message, and a hyphenation fix in a test file docstring. There is no security-relevant change.

Security candidateMk4 SSSP Word Checkby scgbckbone · d15de032 · Sep 16, 2025 · 2 filesMessage 28 · OpaqueLow 44Details
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
AI analysis · Low 44/100

This commit fixes the 'first and last seed word' login challenge on older COLDCARD Mk4 devices. Previously, the on-screen word picker for this security check was broken (the code even had a 'TODO: fix bugs here on Mk4' comment), which could have allowed someone with physical access to bypass or fail the word-check screen. The patch replaces the buggy callback-based picker with a working one, so the device can now properly verify the user's seed words during login.

Security candidateword entryby Peter D. Gray · 43544f4f · Sep 16, 2025 · 3 filesMessage 0 · OpaqueLow 26Details
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
AI analysis · Low 26/100

This commit fixes a small bug in the COLDCARD wallet's login security check. When the device asks the user to confirm the first and last seed words (to prove they know the backup), the old code could accidentally keep leftover words from a previous attempt. The change makes the word collection more reliable and adds a 'Startup...' message so the screen doesn't look frozen. It is a cleanup/hardening fix rather than a clear-cut exploitable vulnerability.

AI review queuedreword last_fail_reasonby Peter D. Gray · 335df666 · Sep 16, 2025 · 1 fileMessage 18 · OpaqueTriage 0Details
Commit message · Peter D. Gray

reword last_fail_reason

18/100 · OpaqueMessage clarity
✓ Subject identifies a change! Too few words to establish purpose! No meaningful explanatory body
Why it was queued
second-pass: opaque commit message
Security candidateSSSP update menu tree & related adjustmentsby scgbckbone · 372954e4 · Sep 16, 2025 · 5 filesMessage 45 · ThinInformational 11Details
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
AI analysis · Informational 11/100

This commit is a routine update to the on-device menu layout and the developer tool that prints that layout. It reorganizes where options appear for a special 'SSSP' limited mode, renames some menu labels, and fixes a few internal code patterns (like replacing inline checks with named helper functions). There is no direct evidence in the commit of a security vulnerability being fixed.

Security candidatenitsby Peter D. Gray · 3f24307d · Sep 16, 2025 · 2 filesMessage 0 · OpaqueInformational 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
AI analysis · Informational 15/100

This commit is a minor code cleanup ('nits'). It moves a helper function, adds a comment, and removes an unused local import. There is no change to user-facing behavior or security logic.

AI review queuedpasses test_ccc_magnitudeby Peter D. Gray · 9d54e261 · Sep 16, 2025 · 2 filesMessage 25 · OpaqueTriage 0Details
Commit message · Peter D. Gray

passes test_ccc_magnitude

25/100 · OpaqueMessage clarity
✓ Descriptive subject! Too few words to establish purpose! No meaningful explanatory body
Why it was queued
second-pass: opaque commit message
AI review queuedcleanupby Peter D. Gray · 28ba1adc · Sep 16, 2025 · 1 fileMessage 0 · OpaqueTriage 0Details
Commit message · Peter D. Gray

cleanup

0/100 · OpaqueMessage clarity
! Generic or placeholder subject! Too few words to establish purpose! No meaningful explanatory body
Why it was queued
second-pass: opaque commit message
Security candidatemore testsby scgbckbone · 8ceb6a46 · Sep 16, 2025 · 2 filesMessage 0 · OpaqueInformational 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
AI analysis · Informational 15/100

This commit only adds and updates test files for the COLDCARD firmware. It expands automated tests for temporary seed handling under a restricted 'hobble' mode, including a new test case for BIP-39 passphrases and a more complete XPRV import test. There are no changes to the actual firmware code that runs on the device, so this commit does not introduce or fix any security vulnerability by itself.

AI review queuedslightly better SE2 emulationby Peter D. Gray · b8435fdd · Sep 16, 2025 · 2 filesMessage 35 · OpaqueTriage 0Details
Commit message · Peter D. Gray

slightly better SE2 emulation

35/100 · OpaqueMessage clarity
✓ Descriptive subject! No meaningful explanatory body
Why it was queued
second-pass: opaque commit message