{"id":636,"date":"2026-10-17T09:26:08","date_gmt":"2026-10-17T09:26:08","guid":{"rendered":"https:\/\/getbitcoin.guide\/articles\/?p=636"},"modified":"2026-10-17T09:31:55","modified_gmt":"2026-10-17T09:31:55","slug":"keepkey-wallet-review","status":"publish","type":"post","link":"https:\/\/getbitcoin.guide\/articles\/keepkey-wallet-review\/","title":{"rendered":"KeepKey Wallet Review: Is the Firmware Still Maintained?"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\"><strong>Yes, the KeepKey wallet is still maintained, but slowly and unevenly. Its GitHub record shows one firmware release in 2025, two published in 2026, and a security fix and a Bitcoin only build posted as pre releases on 16 October 2026. It has no secure element, so physical theft is its weak point.<\/strong><\/p>\n\n\n\n<div class=\"msq-audio\" data-article=\"keepkey-wallet-review\" data-minutes=\"12\">\n<style>.msq-audio{margin:1.25em 0 1.75em;padding:16px 18px;background:#EEF3F8;border:1px solid #CBD8E6;border-radius:12px}\n.msq-audio-lead{margin:0 0 8px;font-size:.95em}.msq-audio audio{width:100%;margin:0 0 12px;display:block}\n.msq-toc-title{margin:0 0 6px;font-weight:700}.msq-toc ol{margin:0;padding:0;list-style:none}\n.msq-toc li{display:flex;gap:10px;align-items:center;padding:6px 6px;border-bottom:1px solid #CBD8E6;border-radius:8px}\n.msq-toc li:last-child{border-bottom:0}.msq-toc li.is-active{background:#fff}\n.msq-toc-play{flex:0 0 auto;width:30px;height:30px;border-radius:50%;border:0;background:#1F4E79;color:#fff;font:inherit;font-size:.72em;line-height:30px;padding:0;cursor:pointer}\n.msq-toc-play.is-playing{background:#B4531A}\n.msq-toc-time{flex:0 0 auto;min-width:3.1em;font-variant-numeric:tabular-nums;color:#4A5560;font-size:.9em}\n.msq-toc a{color:#1B1F24;text-decoration:none;line-height:1.35}.msq-toc li.is-active a{font-weight:700;color:#1F4E79}\n.msq-audio-note{margin:10px 0 0;font-size:.82em;color:#4A5560}\nh2.wp-block-heading[id]{scroll-margin-top:24px}\n.msq-hplay{display:inline-block;vertical-align:middle;width:26px;height:26px;margin:0 0 0 10px;border-radius:50%;border:0;background:#1F4E79;cursor:pointer;padding:0;position:relative;top:-2px}\n.msq-hplay::before{content:'\u25b6\ufe0e';display:block;color:#fff;font-size:11px;line-height:26px;text-align:center}\n.msq-hplay.is-playing{background:#B4531A}.msq-hplay.is-playing::before{content:'\u2016';font-size:13px;font-weight:700}\n.msq-bar{position:fixed;left:0;right:0;bottom:0;z-index:9000;display:flex;align-items:center;gap:10px;padding:8px 12px;padding-bottom:calc(8px + env(safe-area-inset-bottom));background:#FFFFFF;border-top:1px solid #CBD8E6;box-shadow:0 -4px 16px rgba(0,0,0,.08);font-size:.92em;color:#1B1F24;transition:transform .2s ease}\n.msq-bar.is-hidden{transform:translateY(130%)}\n.msq-bar-play{display:inline-flex;align-items:center;gap:8px;border:0;border-radius:999px;background:#1F4E79;color:#fff;font:inherit;font-weight:700;padding:8px 14px 8px 12px;cursor:pointer;white-space:nowrap}\n.msq-bar-play.is-playing{background:#B4531A}\n.msq-bar-icon::before{content:'\u25b6\ufe0e';font-size:12px}.msq-bar-play.is-playing .msq-bar-icon::before{content:'\u2016';font-size:14px;font-weight:700}\n.msq-bar-chapter{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}\n.msq-bar-time{flex:0 0 auto;font-variant-numeric:tabular-nums;color:#4A5560;font-size:.9em}\n.msq-bar-rate,.msq-bar-close{flex:0 0 auto;border:1px solid #CBD8E6;background:#fff;color:#1B1F24;font:inherit;font-size:.85em;line-height:1;border-radius:8px;padding:7px 9px;cursor:pointer}\n.msq-bar-close::before{content:'\u2715'}\n.msq-bar.msq-bar-pill{left:auto;right:14px;bottom:14px;padding:6px;padding-bottom:6px;border:1px solid #CBD8E6;border-radius:999px;box-shadow:0 6px 20px rgba(0,0,0,.15)}\n.msq-bar.msq-bar-pill .msq-bar-chapter,.msq-bar.msq-bar-pill .msq-bar-time,.msq-bar.msq-bar-pill .msq-bar-rate{display:none}\nbody.msq-has-bar{padding-bottom:76px}\n@media (max-width:600px){.msq-bar-time{display:none}.msq-bar{gap:8px;padding-left:10px;padding-right:10px}}\n.msq-s.msq-now{background:#EEF3F8;box-shadow:0 2px 0 #1F4E79;border-radius:2px}\ntr.msq-now td,tr.msq-now th{background:#EEF3F8;box-shadow:inset 0 -2px 0 #1F4E79}\n@media (hover:hover){.msq-s,tr[data-i]{cursor:pointer}.msq-s:hover{background:#EEF3F8}}<\/style>\n<script type=\"application\/ld+json\">{\"@context\":\"https:\/\/schema.org\",\"@type\":\"AudioObject\",\"@id\":\"https:\/\/getbitcoin.guide\/articles\/keepkey-wallet-review\/#audio\",\"name\":\"KeepKey Wallet Review: Is the Firmware Still Maintained?, read aloud\",\"description\":\"Synthetic voice reading of the article, recorded 17 October 2026.\",\"contentUrl\":\"https:\/\/getbitcoin.guide\/articles\/wp-content\/uploads\/2026\/10\/keepkey-wallet-review-audio-202610171501.mp3\",\"encodingFormat\":\"audio\/mpeg\",\"duration\":\"PT12M0S\",\"uploadDate\":\"2026-10-17\",\"inLanguage\":\"en-GB\",\"isAccessibleForFree\":true,\"mainEntityOfPage\":\"https:\/\/getbitcoin.guide\/articles\/keepkey-wallet-review\/\",\"hasPart\":[{\"@type\":\"Clip\",\"name\":\"KeepKey Wallet Review: Is the Firmware Still Maintained?\",\"startOffset\":0,\"endOffset\":58},{\"@type\":\"Clip\",\"name\":\"Is the KeepKey wallet still maintained in practice?\",\"startOffset\":58,\"endOffset\":131,\"url\":\"https:\/\/getbitcoin.guide\/articles\/keepkey-wallet-review\/#is-the-keepkey-wallet-still-maintained-in-practice\"},{\"@type\":\"Clip\",\"name\":\"Which KeepKey firmware is actually published today?\",\"startOffset\":131,\"endOffset\":270,\"url\":\"https:\/\/getbitcoin.guide\/articles\/keepkey-wallet-review\/#which-keepkey-firmware-is-actually-published-today\"},{\"@type\":\"Clip\",\"name\":\"What happened to KeepKey after ShapeShift?\",\"startOffset\":270,\"endOffset\":321,\"url\":\"https:\/\/getbitcoin.guide\/articles\/keepkey-wallet-review\/#what-happened-to-keepkey-after-shapeshift\"},{\"@type\":\"Clip\",\"name\":\"What does a KeepKey protect against, and what does it not?\",\"startOffset\":321,\"endOffset\":414,\"url\":\"https:\/\/getbitcoin.guide\/articles\/keepkey-wallet-review\/#what-does-a-keepkey-protect-against-and-what-does-it-not\"},{\"@type\":\"Clip\",\"name\":\"Does KeepKey support Taproot and a Bitcoin only firmware?\",\"startOffset\":414,\"endOffset\":475,\"url\":\"https:\/\/getbitcoin.guide\/articles\/keepkey-wallet-review\/#does-keepkey-support-taproot-and-a-bitcoin-only-firmware\"},{\"@type\":\"Clip\",\"name\":\"What does a KeepKey cost, and why do the prices disagree?\",\"startOffset\":475,\"endOffset\":513,\"url\":\"https:\/\/getbitcoin.guide\/articles\/keepkey-wallet-review\/#what-does-a-keepkey-cost-and-why-do-the-prices-disagree\"},{\"@type\":\"Clip\",\"name\":\"What do KeepKey owners actually report?\",\"startOffset\":513,\"endOffset\":608,\"url\":\"https:\/\/getbitcoin.guide\/articles\/keepkey-wallet-review\/#what-do-keepkey-owners-actually-report\"},{\"@type\":\"Clip\",\"name\":\"How does KeepKey compare with other open source signers?\",\"startOffset\":608,\"endOffset\":720,\"url\":\"https:\/\/getbitcoin.guide\/articles\/keepkey-wallet-review\/#how-does-keepkey-compare-with-other-open-source-signers\"}],\"contentSize\":\"5.0 MB\"}<\/script>\n<p class=\"msq-audio-lead\"><strong>Listen to this article<\/strong>, about 12 minutes. A synthetic voice reads the article and announces each section title as it begins; tables are read row by row and the questions at the end are left out.<\/p>\n<audio class=\"msq-audio-player\" controls preload=\"metadata\" src=\"https:\/\/getbitcoin.guide\/articles\/wp-content\/uploads\/2026\/10\/keepkey-wallet-review-audio-202610171501.mp3\"><\/audio>\n<nav class=\"msq-toc\" aria-label=\"In this article\"><p class=\"msq-toc-title\">In this article<\/p>\n<ol>\n<li data-start=\"0.0\"><button type=\"button\" class=\"msq-toc-play\" data-start=\"0.0\" aria-label=\"Play from: KeepKey Wallet Review: Is the Firmware Still Maintained?\">&#x25B6;&#xFE0E;<\/button><span class=\"msq-toc-time\">0:00<\/span><a href=\"#top\">KeepKey Wallet Review: Is the Firmware Still Maintained?<\/a><\/li>\n<li data-start=\"58.3\"><button type=\"button\" class=\"msq-toc-play\" data-start=\"58.3\" aria-label=\"Play from: Is the KeepKey wallet still maintained in practice?\">&#x25B6;&#xFE0E;<\/button><span class=\"msq-toc-time\">0:58<\/span><a href=\"#is-the-keepkey-wallet-still-maintained-in-practice\">Is the KeepKey wallet still maintained in practice?<\/a><\/li>\n<li data-start=\"130.96\"><button type=\"button\" class=\"msq-toc-play\" data-start=\"130.96\" aria-label=\"Play from: Which KeepKey firmware is actually published today?\">&#x25B6;&#xFE0E;<\/button><span class=\"msq-toc-time\">2:11<\/span><a href=\"#which-keepkey-firmware-is-actually-published-today\">Which KeepKey firmware is actually published today?<\/a><\/li>\n<li data-start=\"270.42\"><button type=\"button\" class=\"msq-toc-play\" data-start=\"270.42\" aria-label=\"Play from: What happened to KeepKey after ShapeShift?\">&#x25B6;&#xFE0E;<\/button><span class=\"msq-toc-time\">4:30<\/span><a href=\"#what-happened-to-keepkey-after-shapeshift\">What happened to KeepKey after ShapeShift?<\/a><\/li>\n<li data-start=\"320.56\"><button type=\"button\" class=\"msq-toc-play\" data-start=\"320.56\" aria-label=\"Play from: What does a KeepKey protect against, and what does it not?\">&#x25B6;&#xFE0E;<\/button><span class=\"msq-toc-time\">5:21<\/span><a href=\"#what-does-a-keepkey-protect-against-and-what-does-it-not\">What does a KeepKey protect against, and what does it not?<\/a><\/li>\n<li data-start=\"414.3\"><button type=\"button\" class=\"msq-toc-play\" data-start=\"414.3\" aria-label=\"Play from: Does KeepKey support Taproot and a Bitcoin only firmware?\">&#x25B6;&#xFE0E;<\/button><span class=\"msq-toc-time\">6:54<\/span><a href=\"#does-keepkey-support-taproot-and-a-bitcoin-only-firmware\">Does KeepKey support Taproot and a Bitcoin only firmware?<\/a><\/li>\n<li data-start=\"474.52\"><button type=\"button\" class=\"msq-toc-play\" data-start=\"474.52\" aria-label=\"Play from: What does a KeepKey cost, and why do the prices disagree?\">&#x25B6;&#xFE0E;<\/button><span class=\"msq-toc-time\">7:55<\/span><a href=\"#what-does-a-keepkey-cost-and-why-do-the-prices-disagree\">What does a KeepKey cost, and why do the prices disagree?<\/a><\/li>\n<li data-start=\"512.94\"><button type=\"button\" class=\"msq-toc-play\" data-start=\"512.94\" aria-label=\"Play from: What do KeepKey owners actually report?\">&#x25B6;&#xFE0E;<\/button><span class=\"msq-toc-time\">8:33<\/span><a href=\"#what-do-keepkey-owners-actually-report\">What do KeepKey owners actually report?<\/a><\/li>\n<li data-start=\"608.04\"><button type=\"button\" class=\"msq-toc-play\" data-start=\"608.04\" aria-label=\"Play from: How does KeepKey compare with other open source signers?\">&#x25B6;&#xFE0E;<\/button><span class=\"msq-toc-time\">10:08<\/span><a href=\"#how-does-keepkey-compare-with-other-open-source-signers\">How does KeepKey compare with other open source signers?<\/a><\/li>\n<\/ol><\/nav>\n<p class=\"msq-audio-note\">Recorded 17 October 2026 from the article as published that day. Press a chapter to jump there; the highlighted line is what is playing. A play button sits beside every section heading, and once you scroll past this player a bar at the bottom of the screen keeps the controls in reach. Tap or click any sentence to hear the reading start from there.<\/p>\n<script>var MSQ_SENT = [[0.0,\"h\",\"keepkeywalletreviewisthe\",47],[4.0,\"p\",\"yesthekeepkeywalletissti\",56],[8.2,\"p\",\"itsgithubrecordshowsonef\",131],[21.84,\"p\",\"ithasnosecureelementsoph\",49],[26.48,\"p\",\"onthispagekeepkeyfirmwar\",191],[41.4,\"p\",\"mostkeepkeyreviewsanswer\",68],[46.56,\"p\",\"botharetrueandneithertel\",59],[50.64,\"p\",\"sothisonereadstherelease\",83],[58.3,\"h\",\"isthekeepkeywalletstillm\",43],[61.3,\"p\",\"theanswerlivesinthekeepk\",66],[66.02,\"p\",\"countingpublisheddevicer\",93],[80.58,\"p\",\"thenitnearlystopped\",19],[82.06,\"p\",\"version7100dated12februa\",98],[91.54,\"p\",\"nothingfollowedforfourte\",32],[93.98,\"p\",\"in2026theworkcameback\",21],[96.42,\"p\",\"version7140arrivedon5apr\",102],[106.78,\"p\",\"thenon16october2026twomo\",66],[114.06,\"p\",\"version7142isdescribedas\",170],[130.96,\"h\",\"whichkeepkeyfirmwareisac\",44],[134.08,\"p\",\"thisiswherethevendorsown\",77],[138.96,\"p\",\"keepkeysfirmwarereleases\",99],[148.48,\"p\",\"fourdayslatergithubcarri\",46],[152.2,\"p\",\"thekeepkeyfaqagreeswitht\",66],[158.76,\"t\",\"7141\",125],[178.84,\"t\",\"7142\",139],[200.04,\"t\",\"7143\",139],[219.28,\"t\",\"715\",108],[234.92,\"t\",\"716\",108],[250.64,\"p\",\"thepracticalrulethatfoll\",45],[254.12,\"p\",\"installfirmwareonlythrou\",135],[262.32,\"p\",\"ifyoudobuildordownloadon\",109],[270.42,\"h\",\"whathappenedtokeepkeyaft\",36],[273.1,\"p\",\"keepkeysowncompanyhistor\",56],[278.66,\"p\",\"itwasfoundedin2014andbou\",45],[283.26,\"p\",\"whenshapeshiftturneditse\",90],[290.46,\"p\",\"thefooteronkeepkeycomnow\",110],[299.9,\"p\",\"thereleaserecordfitsthat\",29],[302.1,\"p\",\"2021wasthebusiestyearong\",145],[314.78,\"p\",\"afterthesplitthecadencef\",46],[320.56,\"h\",\"whatdoesakeepkeyprotecta\",46],[323.88,\"p\",\"akeepkeykeepsyourkeysoff\",109],[331.16,\"p\",\"whatitdoesnothaveisasecu\",33],[334.0,\"p\",\"keepkeyssecuritypagesays\",171],[347.4,\"p\",\"thecostofthatchoicewasme\",38],[349.84,\"p\",\"on10december2019krakense\",256],[370.4,\"p\",\"thedefencebothkrakenandk\",109],[377.12,\"p\",\"thatonlyhelpsifthepassph\",72],[383.2,\"p\",\"alostpassphraselocksyouo\",61],[388.0,\"p\",\"onesmalloddityforthespec\",114],[400.16,\"p\",\"eitherwayitisageneralpur\",32],[402.08,\"p\",\"deviceswithasecureelemen\",140],[414.3,\"h\",\"doeskeepkeysupporttaproo\",48],[417.9,\"p\",\"partlyandthewordingmatte\",26],[419.74,\"p\",\"version7100infebruary202\",83],[428.06,\"p\",\"taprootsigningspendingfr\",109],[436.62,\"p\",\"thereleasenoteaddsthatmu\",144],[450.74,\"p\",\"amulticoinfirmwarecarrie\",49],[454.86,\"p\",\"the7142securityfixwasalm\",101],[465.94,\"p\",\"readersweighinghowmuchof\",130],[474.52,\"h\",\"whatdoesakeepkeycostandw\",45],[478.12,\"p\",\"pagesrankingforthisdevic\",138],[489.84,\"p\",\"thevendorisnotmuchtidier\",24],[491.84,\"p\",\"on17october2026thekeepke\",108],[503.44,\"p\",\"keepkeyssecuritypagelist\",127],[512.94,\"h\",\"whatdokeepkeyownersactua\",33],[515.38,\"p\",\"thisreviewdrewon13public\",161],[527.54,\"p\",\"thesearewhatpeoplereport\",39],[530.46,\"p\",\"noneofthemdescribedcoins\",42],[533.7,\"p\",\"almostalldescribedthesof\",44],[536.62,\"p\",\"inmay2026onrkeepkeydevsa\",159],[551.86,\"p\",\"keepkeysupportrepliedtha\",112],[561.02,\"p\",\"inajuly2025githubissueal\",123],[570.7,\"p\",\"supportansweredtwodaysla\",40],[573.78,\"p\",\"inanovember2024issueawin\",92],[580.74,\"p\",\"anoctober2024issueabouta\",101],[588.98,\"p\",\"trustpilotshowed28outof5\",124],[598.7,\"p\",\"thepatternmatchestherele\",124],[608.04,\"h\",\"howdoeskeepkeycomparewit\",47],[611.6,\"t\",\"secureelement\",78],[621.96,\"t\",\"latestpublishedfirmware\",76],[633.96,\"t\",\"newestbuilds\",80],[647.76,\"t\",\"taproot\",106],[662.28,\"t\",\"connection\",59],[670.76,\"t\",\"priceonthevendorsite\",94],[685.56,\"p\",\"againstthetrezorrangeand\",89],[692.28,\"p\",\"thattradesuitssomeonewho\",87],[698.08,\"p\",\"itsuitslesswellsomeonewh\",54],[701.88,\"p\",\"whateveryouuseyourwordsb\",153],[712.72,\"p\",\"thispagedescribesadevice\",36],[715.96,\"p\",\"itisnotadvicetobuysellor\",36]];\n(function(){\n  function init(){\n  var root = document.querySelector('.msq-audio'); if (!root) { return; }\n  var audio = root.querySelector('audio'), items = Array.prototype.slice.call(root.querySelectorAll('.msq-toc li'));\n  var starts = items.map(function(li){ return parseFloat(li.getAttribute('data-start')) || 0; });\n  var names = items.map(function(li){ return li.querySelector('a').textContent; });\n  var anchors = items.map(function(li){ var h = li.querySelector('a').getAttribute('href') || ''; return (h.charAt(0) === '#' && h !== '#top') ? document.getElementById(h.slice(1)) : null; });\n  var article = root.getAttribute('data-article') || location.pathname, minutes = root.getAttribute('data-minutes') || '';\n  var marks = {}, started = false, pausedAt = -1, closed = false, ended = false;\n  var RATES = [1, 1.25, 1.5], rate = 1;\n  try { var saved = parseFloat(localStorage.getItem('msq-audio-rate')); if (RATES.indexOf(saved) >= 0) { rate = saved; } } catch (e) {}\n  audio.playbackRate = rate;\n  function track(name, extra){ try { if (typeof gtag === 'function') { var p = { article: article }; for (var k in extra) { p[k] = extra[k]; } gtag('event', name, p); } } catch (e) {} }\n  function current(){ var t = audio.currentTime, idx = 0; for (var i = 0; starts.length > i; i += 1) { if (t + 0.25 >= starts[i]) { idx = i; } } return idx; }\n  function onScreen(){\n    var line = window.innerHeight \/ 3, idx = 0;\n    for (var i = 0; anchors.length > i; i += 1) { var el = anchors[i]; if (el && line >= el.getBoundingClientRect().top) { idx = i; } }\n    return idx;\n  }\n  function fmt(s){ s = Math.max(0, Math.round(s || 0)); var m = Math.floor(s \/ 60), r = s % 60; return m + ':' + (10 > r ? '0' : '') + r; }\n  function play(from, source){\n    if (from !== null) { audio.currentTime = from; }\n    var p = audio.play(); if (p && p.catch) { p.catch(function(){}); }\n    track(from === null ? 'audio_resume' : 'audio_chapter', { chapter: names[current()], start: Math.round(audio.currentTime), source: source });\n  }\n  var hbtns = anchors.map(function(el, i){\n    if (!el) { return null; }\n    var b = document.createElement('button'); b.type = 'button'; b.className = 'msq-hplay'; b.setAttribute('aria-label', 'Play this section: ' + names[i]);\n    b.addEventListener('click', function(){\n      if (!audio.paused && current() === i) { audio.pause(); track('audio_pause', { source: 'heading' }); return; }\n      play(starts[i], 'heading');\n    });\n    el.appendChild(b); return b;\n  });\n  var bar = document.createElement('div'); bar.className = 'msq-bar msq-bar-pill is-hidden'; bar.setAttribute('role', 'region'); bar.setAttribute('aria-label', 'Audio player');\n  var playBtn = document.createElement('button'); playBtn.type = 'button'; playBtn.className = 'msq-bar-play';\n  var icon = document.createElement('span'); icon.className = 'msq-bar-icon'; icon.setAttribute('aria-hidden', 'true');\n  var label = document.createElement('span'); label.className = 'msq-bar-label';\n  playBtn.appendChild(icon); playBtn.appendChild(label);\n  var chap = document.createElement('span'); chap.className = 'msq-bar-chapter';\n  var clock = document.createElement('span'); clock.className = 'msq-bar-time';\n  var rateBtn = document.createElement('button'); rateBtn.type = 'button'; rateBtn.className = 'msq-bar-rate'; rateBtn.setAttribute('aria-label', 'Playback speed');\n  var closeBtn = document.createElement('button'); closeBtn.type = 'button'; closeBtn.className = 'msq-bar-close'; closeBtn.setAttribute('aria-label', 'Close the audio bar');\n  bar.appendChild(playBtn); bar.appendChild(chap); bar.appendChild(clock); bar.appendChild(rateBtn); bar.appendChild(closeBtn);\n  document.body.appendChild(bar);\n  function showRate(){ rateBtn.textContent = (rate === 1 ? '1' : String(rate)) + 'x'; }\n  showRate();\n  rateBtn.addEventListener('click', function(){\n    rate = RATES[(RATES.indexOf(rate) + 1) % RATES.length]; audio.playbackRate = rate; showRate();\n    try { localStorage.setItem('msq-audio-rate', String(rate)); } catch (e) {}\n    track('audio_rate', { rate: rate });\n  });\n  closeBtn.addEventListener('click', function(){\n    closed = true; if (!audio.paused) { audio.pause(); } paint(); track('audio_bar_close', {});\n  });\n  function mode(){\n    if (!audio.paused) { return 'pause'; }\n    if (ended) { return 'again'; }\n    if (!started) { return 'listen'; }\n    return (pausedAt === onScreen()) ? 'resume' : 'section';\n  }\n  playBtn.addEventListener('click', function(){\n    var m = mode();\n    if (m === 'pause') { audio.pause(); track('audio_pause', { source: 'bar' }); return; }\n    if (m === 'again') { ended = false; play(0, 'bar'); return; }\n    if (m === 'resume') { play(null, 'bar'); return; }\n    play(starts[onScreen()], 'bar');\n  });\n  function paint(){\n    var idx = current(), playing = !audio.paused, m = mode();\n    items.forEach(function(li, i){\n      var on = (i === idx) && playing, b = li.querySelector('.msq-toc-play'), a = li.querySelector('a');\n      li.classList.toggle('is-active', on); b.classList.toggle('is-playing', on);\n      b.textContent = on ? '\u2016' : '\u25b6\ufe0e';\n      b.setAttribute('aria-label', (on ? 'Pause: ' : 'Play from: ') + a.textContent);\n    });\n    hbtns.forEach(function(b, i){ if (b) { var on = (i === idx) && playing; b.classList.toggle('is-playing', on); b.setAttribute('aria-label', (on ? 'Pause this section: ' : 'Play this section: ') + names[i]); } });\n    playBtn.classList.toggle('is-playing', playing);\n    label.textContent = m === 'pause' ? 'Pause' : m === 'again' ? 'Play again' : m === 'resume' ? 'Resume' : m === 'section' ? 'Play this section' : 'Listen, ' + minutes + ' min';\n    playBtn.setAttribute('aria-label', label.textContent);\n    chap.textContent = started ? names[(playing || m === 'resume') ? idx : onScreen()] : '';\n    clock.textContent = started ? fmt(audio.currentTime) + ' \/ ' + fmt(audio.duration) : '';\n    bar.classList.toggle('msq-bar-pill', !started);\n    var show = !closed && (started || 0 > root.getBoundingClientRect().bottom);\n    bar.classList.toggle('is-hidden', !show);\n    document.body.classList.toggle('msq-has-bar', show);\n  }\n  root.addEventListener('click', function(e){\n    var b = e.target.closest ? e.target.closest('.msq-toc-play') : null; if (!b) { return; }\n    var li = b.parentNode, s = parseFloat(b.getAttribute('data-start')) || 0;\n    if (!audio.paused && current() === items.indexOf(li)) { audio.pause(); track('audio_pause', { source: 'index' }); return; }\n    play(s, 'index');\n  });\n  audio.addEventListener('play', function(){ ended = false; closed = false; if (!started) { started = true; track('audio_play', { minutes: Math.round((audio.duration || 0) \/ 60) }); } paint(); });\n  audio.addEventListener('pause', function(){ pausedAt = current(); paint(); });\n  audio.addEventListener('timeupdate', function(){\n    paint();\n    if (audio.duration > 0) {\n      var pct = Math.floor(audio.currentTime \/ audio.duration * 100);\n      [25, 50, 75].forEach(function(m){ if (pct >= m && !marks[m]) { marks[m] = true; track('audio_progress', { percent: m }); } });\n    }\n  });\n  audio.addEventListener('ended', function(){ ended = true; track('audio_complete', {}); paint(); });\n  var ticking = false;\n  function onScroll(){ if (ticking) { return; } ticking = true; setTimeout(function(){ ticking = false; paint(); }, 80); }\n  window.addEventListener('scroll', onScroll, { passive: true }); window.addEventListener('resize', onScroll);\n  paint();\n  }\n  if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', init); } else { init(); }\n})();\n\n(function(){\n  function start(){\n    var root = document.querySelector('.msq-audio'), audio = root ? root.querySelector('audio') : null;\n    var map = (typeof MSQ_SENT !== 'undefined') ? MSQ_SENT : [];\n    if (!root || !audio || !map.length) { return; }\n    var scope = root.closest('main') || root.closest('article') || root.closest('.entry-content') || document.body;\n    var SKIP = '.msq-audio,.msq,.msq-tool,.msq-end,.msq-bar,script,style,noscript,figcaption,#rank-math-faq,.rank-math-block,nav,header,footer';\n    function norm(s){ return s.toLowerCase().replace(\/[^a-z0-9]+\/g, ''); }\n    var nodes = [], stream = '', walker = document.createTreeWalker(scope, NodeFilter.SHOW_TEXT, null), n;\n    while ((n = walker.nextNode())) {\n      var el = n.parentElement; if (!el || el.closest(SKIP)) { continue; }\n      var raw = n.nodeValue, keep = [], norms = '';\n      for (var i = 0; raw.length > i; i += 1) { var c = raw.charAt(i).toLowerCase(); if (\/[a-z0-9]\/.test(c)) { keep.push(i); norms += c; } }\n      if (!norms) { continue; }\n      nodes.push({ node: n, a: stream.length, b: stream.length + norms.length, keep: keep });\n      stream += norms;\n    }\n    var segs = [], cursor = 0, lastRow = null;\n    map.forEach(function(m, idx){\n      var kind = m[1], f = m[2], len = m[3];\n      if (kind === 't') {\n        var rows = scope.querySelectorAll('tr'), after = !lastRow;\n        for (var r = 0; rows.length > r; r += 1) {\n          var tr = rows[r];\n          if (!after) { if (tr === lastRow) { after = true; } continue; }\n          var cell = tr.querySelector('td,th');\n          if (cell && norm(cell.textContent).indexOf(f) === 0) { tr.setAttribute('data-i', idx); lastRow = tr; break; }\n        }\n        return;\n      }\n      var p = stream.indexOf(f, cursor); if (0 > p) { return; }\n      segs.push({ i: idx, a: p, b: Math.min(p + len, stream.length) }); cursor = p + len;\n    });\n    var si = 0;\n    nodes.forEach(function(nd){\n      var frag = document.createDocumentFragment(), raw = nd.node.nodeValue, rawPos = 0, any = false;\n      for (var k = si; segs.length > k; k += 1) {\n        var sg = segs[k]; if (sg.a >= nd.b) { break; } if (nd.a >= sg.b) { continue; }\n        var s = Math.max(sg.a, nd.a), e = Math.min(sg.b, nd.b);\n        var rs = nd.keep[s - nd.a], re2 = nd.keep[e - nd.a - 1] + 1;\n        if (rs > rawPos) { frag.appendChild(document.createTextNode(raw.slice(rawPos, rs))); }\n        var span = document.createElement('span'); span.className = 'msq-s'; span.setAttribute('data-i', sg.i); span.textContent = raw.slice(rs, re2);\n        frag.appendChild(span); rawPos = re2; any = true;\n        if (sg.b > nd.b) { break; }\n      }\n      while (segs.length > si && nd.b >= segs[si].b) { si += 1; }\n      if (!any) { return; }\n      if (raw.length > rawPos) { frag.appendChild(document.createTextNode(raw.slice(rawPos))); }\n      nd.node.parentNode.replaceChild(frag, nd.node);\n    });\n    var starts = map.map(function(m){ return m[0]; }), curIdx = -1, lastUser = 0, timer = null, autoUntil = 0, dragging = false;\n    function idxAt(t){ var lo = 0, hi = starts.length; while (hi > lo + 1) { var mid = (lo + hi) >> 1; if (t + 0.15 >= starts[mid]) { lo = mid; } else { hi = mid; } } return (t + 0.15 >= starts[0]) ? lo : -1; }\n    function setNow(i){\n      if (i === curIdx) { return; }\n      Array.prototype.forEach.call(scope.querySelectorAll('.msq-now'), function(el){ el.classList.remove('msq-now'); });\n      curIdx = i; if (0 > i) { return; }\n      var els = scope.querySelectorAll('[data-i=\"' + i + '\"]'); if (!els.length) { return; }\n      Array.prototype.forEach.call(els, function(el){ el.classList.add('msq-now'); });\n      var r = els[0].getBoundingClientRect(), now = Date.now();\n      if (!dragging && now > lastUser + 2500 && (80 > r.top || r.bottom > window.innerHeight - 140)) {\n        var reduce = window.matchMedia && window.matchMedia('(prefers-reduced-motion: reduce)').matches;\n        autoUntil = now + (reduce ? 400 : 1600);\n        els[0].scrollIntoView({ block: 'center', behavior: reduce ? 'auto' : 'smooth' });\n      }\n    }\n    function tick(){ if (!audio.paused) { setNow(idxAt(audio.currentTime)); } }\n    function userScrolled(){ lastUser = Date.now(); }\n    ['wheel', 'touchmove', 'keydown'].forEach(function(ev){ window.addEventListener(ev, userScrolled, { passive: true }); });\n    window.addEventListener('scroll', function(){ if (Date.now() > autoUntil) { userScrolled(); } }, { passive: true });\n    window.addEventListener('mousedown', function(e){ if (e.clientX >= document.documentElement.clientWidth) { dragging = true; userScrolled(); } }, { passive: true });\n    window.addEventListener('mouseup', function(){ if (dragging) { dragging = false; userScrolled(); } }, { passive: true });\n    audio.addEventListener('play', function(){ if (timer) { clearInterval(timer); } timer = setInterval(tick, 150); tick(); });\n    audio.addEventListener('pause', function(){ if (timer) { clearInterval(timer); timer = null; } });\n    scope.addEventListener('click', function(e){\n      if (e.target.closest('a, button, input, select, textarea, label, summary, .msq, .msq-tool, .msq-end, .msq-audio, .msq-bar')) { return; }\n      var sel = window.getSelection ? String(window.getSelection()) : '';\n      if (sel && sel.trim()) { return; }\n      var el = e.target.closest('[data-i]'); if (!el) { return; }\n      var i = parseInt(el.getAttribute('data-i'), 10); if (isNaN(i)) { return; }\n      if (!audio.paused && i === curIdx) { return; }\n      lastUser = Date.now();\n      audio.currentTime = starts[i];\n      var p = audio.play(); if (p && p.catch) { p.catch(function(){}); }\n      try { if (typeof gtag === 'function') { gtag('event', 'audio_chapter', { article: location.pathname, source: 'sentence', start: Math.round(starts[i]) }); } } catch (err) {}\n    });\n    audio.addEventListener('seeked', tick);\n    audio.addEventListener('ended', function(){ setNow(-1); });\n  }\n  if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', start); } else { start(); }\n})();<\/script>\n<\/div>\n\n\n\n<p class=\"msq-hook wp-block-paragraph\">On this page: KeepKey firmware releases counted year by year from GitHub, a table setting the vendor&#8217;s own status page against the two builds posted on 16 October 2026, and what 13 owner accounts report about the apps around the device.<\/p>\n\n\n\n<div class=\"msq\" id=\"ms-quiz\" data-slug=\"keepkey-wallet-review\" data-category=\"self custody and wallets\" data-list=\"1\">\n<style>.msq,.msq-hook,.msq-box,.msq-end,.msq-tool{--msq-accent:#1F4E79;--msq-accent-text:#FFFFFF;--msq-line:#CBD8E6;--msq-warn:#B4531A;--msq-muted:#4A5560;--msq-tint:#EEF3F8;--msq-base:#FFFFFF}\n.msq{margin:1.25em 0 1.75em}\n.msq-hook{border-left:3px solid var(--msq-accent);padding:6px 14px;color:var(--msq-muted);font-size:.97em}\n.msq-box{background:var(--msq-tint);border:1px solid var(--msq-line);border-radius:12px;padding:0}\n.msq-box>summary{cursor:pointer;list-style:none;padding:14px 18px;font-weight:700;color:var(--msq-accent)}\n.msq-box>summary::-webkit-details-marker{display:none}\n.msq-box>summary::before{content:\"+\";display:inline-block;width:1.1em;font-weight:800}\n.msq-box[open]>summary::before{content:\"\\00d7\"}\n.msq-body{padding:2px 18px 18px}\n.msq-intro{margin:0 0 12px;font-size:.95em;color:var(--msq-muted)}\n.msq-list{margin:0;padding:0;list-style:none}\n.msq-q{margin:0 0 18px;padding:0}\n.msq-question{font-weight:700;margin:0 0 8px}\n.msq-options{display:flex;flex-direction:column;gap:8px}\n.msq-opt{text-align:left;background:var(--msq-base);border:1px solid var(--msq-line);border-radius:8px;padding:10px 12px;font:inherit;font-size:.95em;color:inherit;cursor:pointer;line-height:1.35}\n.msq-opt:hover{border-color:var(--msq-accent)}\n.msq-opt[disabled]{cursor:default}\n.msq-opt.is-right{border-color:var(--msq-accent);background:var(--msq-line);font-weight:700}\n.msq-opt.is-wrong{border-color:var(--msq-warn);color:var(--msq-warn)}\n.msq-explain{margin:8px 0 0;font-size:.92em;padding:10px 12px;border-left:3px solid var(--msq-accent);background:var(--msq-base);border-radius:0 8px 8px 0}\n.msq-explain[hidden]{display:none}\n.msq-verdict{font-weight:700}\n.msq-result{margin-top:14px;padding:14px 16px;background:var(--msq-base);border:1px solid var(--msq-line);border-radius:10px}\n.msq-result[hidden]{display:none}\n.msq-result h3{margin:0 0 6px;font-size:1.1em}\n.msq-result p{margin:0 0 8px}\n.msq-jump{margin:0 0 8px;padding-left:1.2em}\n.msq-form{margin-top:10px;display:flex;flex-wrap:wrap;gap:8px;align-items:center}\n.msq-form input[type=email]{flex:1 1 220px;padding:10px 12px;border:1px solid var(--msq-muted);border-radius:8px;font:inherit;background:#fff}\n.msq-btn{background:var(--msq-accent);color:var(--msq-accent-text);border:0;border-radius:8px;padding:11px 18px;font:inherit;font-weight:700;cursor:pointer}\n.msq-btn:hover{filter:brightness(.92)}\n.msq-btn[disabled]{opacity:.7;cursor:default}\n.msq-no{font-size:.9em;color:var(--msq-muted);margin-left:4px}\n.msq-privacy{margin:6px 0 0;font-size:.82em;color:var(--msq-muted);flex-basis:100%}\n.msq-hp{position:absolute;left:-5000px;width:1px;height:1px;overflow:hidden}\n.msq-msg{margin:8px 0 0;font-size:.92em}\n.msq-end{margin:1.5em 0;padding:18px;border:1px solid var(--msq-accent);border-radius:12px;text-align:center;background:var(--msq-tint)}\n.msq-end p{margin:0 0 12px}\n.msq-end .msq-body{text-align:left;padding:16px 0 0}\n.msq-end .msq-start-test[hidden]{display:none}\n.msq-tool{margin:1.5em 0;padding:18px 20px;background:var(--msq-tint);border:1px solid var(--msq-line);border-radius:12px}\n.msq-tool h3{margin:0 0 6px;font-size:1.15em}\n.msq-tool p{margin:0 0 10px}\n.msq-tool .msq-note{font-size:.85em;color:var(--msq-muted);margin:10px 0 0}\n.msq-check label{display:flex;gap:10px;align-items:flex-start;padding:9px 0;border-bottom:1px solid var(--msq-line);cursor:pointer;line-height:1.4}\n.msq-check label:last-of-type{border-bottom:0}\n.msq-check input{margin-top:5px;flex:0 0 auto;width:18px;height:18px;accent-color:var(--msq-accent)}\n.msq-check-count{font-weight:700;margin:10px 0 0}\n.msq-verdict-box{margin:12px 0 0;padding:10px 14px;border-radius:8px;background:var(--msq-base);border-left:3px solid var(--msq-warn)}\n.msq-verdict-box[hidden]{display:none}\n.msq-calc{display:grid;grid-template-columns:1fr 1fr;gap:10px 16px}\n.msq-calc label{display:flex;flex-direction:column;gap:4px;font-size:.92em}\n.msq-calc input,.msq-calc select{padding:8px 10px;border:1px solid var(--msq-muted);border-radius:8px;font:inherit;background:#fff}\n.msq-calc-out{grid-column:1 \/ -1;margin-top:6px;padding:12px 14px;background:var(--msq-base);border-radius:8px;border:1px solid var(--msq-line)}\n.msq-calc-out strong{font-size:1.15em}\n.msq-choose label{display:block;padding:9px 12px;margin:0 0 8px;background:var(--msq-base);border:1px solid var(--msq-line);border-radius:8px;cursor:pointer}\n.msq-choose input{margin-right:8px;accent-color:var(--msq-accent)}\n.msq-choice-result{margin-top:10px;padding:12px 14px;background:var(--msq-base);border-left:3px solid var(--msq-accent);border-radius:0 8px 8px 0}\n.msq-choice-result[hidden]{display:none}\n@media (max-width:600px){.msq-calc{grid-template-columns:1fr}}\nh2.wp-block-heading[id]{scroll-margin-top:24px}<\/style>\n<noscript><style>.msq-explain{display:block !important}<\/style><\/noscript>\n<details class=\"msq-box\">\n<summary>Think you already know this? Five questions, one minute.<\/summary>\n<div class=\"msq-body\">\n<p class=\"msq-intro\">Every answer is on this page. Answer from what you know now; the page fills in the rest.<\/p>\n<ol class=\"msq-list\">\n<li class=\"msq-q\" data-q=\"1\" data-answer=\"b\" data-title=\"Is the KeepKey wallet still maintained in practice?\" data-section=\"#is-the-keepkey-wallet-still-maintained-in-practice\">\n<p class=\"msq-question\">1. How many KeepKey firmware releases did GitHub record in 2025?<\/p>\n<div class=\"msq-options\" role=\"group\" aria-label=\"Question 1 options\"><button type=\"button\" class=\"msq-opt\" data-opt=\"a\">None<\/button><button type=\"button\" class=\"msq-opt\" data-opt=\"b\">One, version 7.10.0 in February<\/button><button type=\"button\" class=\"msq-opt\" data-opt=\"c\">Five<\/button><\/div>\n<p class=\"msq-explain\" hidden><span class=\"msq-verdict\"><\/span>The <a href=\"https:\/\/github.com\/keepkey\/keepkey-firmware\/releases\" target=\"_blank\" rel=\"noopener\">KeepKey firmware releases on GitHub<\/a> show 7.10.0 on 12 February 2025 as the only release that year, followed by fourteen months with none. <a class=\"msq-section\" href=\"#is-the-keepkey-wallet-still-maintained-in-practice\">Read the section<\/a><\/p>\n<\/li>\n<li class=\"msq-q\" data-q=\"2\" data-answer=\"a\" data-title=\"Which KeepKey firmware is actually published today?\" data-section=\"#which-keepkey-firmware-is-actually-published-today\">\n<p class=\"msq-question\">2. On 12 October 2026, which version did KeepKey&#8217;s release status page list as the only published firmware?<\/p>\n<div class=\"msq-options\" role=\"group\" aria-label=\"Question 2 options\"><button type=\"button\" class=\"msq-opt\" data-opt=\"a\">7.14.1<\/button><button type=\"button\" class=\"msq-opt\" data-opt=\"b\">7.14.2<\/button><button type=\"button\" class=\"msq-opt\" data-opt=\"c\">7.16<\/button><\/div>\n<p class=\"msq-explain\" hidden><span class=\"msq-verdict\"><\/span>The <a href=\"https:\/\/docs.keepkey.com\/docs\/firmware\/release-status\" target=\"_blank\" rel=\"noopener\">KeepKey release status page<\/a> lists 7.14.1 as published and 7.14.2 as merged but not published, even though GitHub posted 7.14.2 as a pre release on 16 October. <a class=\"msq-section\" href=\"#which-keepkey-firmware-is-actually-published-today\">Read the section<\/a><\/p>\n<\/li>\n<li class=\"msq-q\" data-q=\"3\" data-answer=\"b\" data-title=\"What happened to KeepKey after ShapeShift?\" data-section=\"#what-happened-to-keepkey-after-shapeshift\">\n<p class=\"msq-question\">3. According to KeepKey&#8217;s own history, when did KeepKey separate from ShapeShift?<\/p>\n<div class=\"msq-options\" role=\"group\" aria-label=\"Question 3 options\"><button type=\"button\" class=\"msq-opt\" data-opt=\"a\">2017<\/button><button type=\"button\" class=\"msq-opt\" data-opt=\"b\">2021, when ShapeShift became a DAO<\/button><button type=\"button\" class=\"msq-opt\" data-opt=\"c\">2025<\/button><\/div>\n<p class=\"msq-explain\" hidden><span class=\"msq-verdict\"><\/span>KeepKey&#8217;s <a href=\"https:\/\/keepkey.com\/blog\/keepkey__a_history_of_hardware_wallet_innovation\" target=\"_blank\" rel=\"noopener\">company history<\/a> says ShapeShift bought it in 2017 and that it went independent after ShapeShift became a DAO in 2021. <a class=\"msq-section\" href=\"#what-happened-to-keepkey-after-shapeshift\">Read the section<\/a><\/p>\n<\/li>\n<li class=\"msq-q\" data-q=\"4\" data-answer=\"a\" data-title=\"What does a KeepKey protect against, and what does it not?\" data-section=\"#what-does-a-keepkey-protect-against-and-what-does-it-not\">\n<p class=\"msq-question\">4. In December 2019, how much physical access did Kraken Security Labs say it needed to extract a KeepKey&#8217;s encrypted seed?<\/p>\n<div class=\"msq-options\" role=\"group\" aria-label=\"Question 4 options\"><button type=\"button\" class=\"msq-opt\" data-opt=\"a\">About 15 minutes<\/button><button type=\"button\" class=\"msq-opt\" data-opt=\"b\">About a week<\/button><button type=\"button\" class=\"msq-opt\" data-opt=\"c\">None, it worked remotely<\/button><\/div>\n<p class=\"msq-explain\" hidden><span class=\"msq-verdict\"><\/span><a href=\"https:\/\/blog.kraken.com\/product\/security\/flaw-found-in-keepkey-crypto-hardware-wallet\" target=\"_blank\" rel=\"noopener\">Kraken Security Labs<\/a> reported voltage glitching with about 15 minutes of physical access and named a strong passphrase as the defence. <a class=\"msq-section\" href=\"#what-does-a-keepkey-protect-against-and-what-does-it-not\">Read the section<\/a><\/p>\n<\/li>\n<li class=\"msq-q\" data-q=\"5\" data-answer=\"c\" data-title=\"Does KeepKey support Taproot and a Bitcoin only firmware?\" data-section=\"#does-keepkey-support-taproot-and-a-bitcoin-only-firmware\">\n<p class=\"msq-question\">5. Which KeepKey build carries Taproot signing?<\/p>\n<div class=\"msq-options\" role=\"group\" aria-label=\"Question 5 options\"><button type=\"button\" class=\"msq-opt\" data-opt=\"a\">Every firmware since 2021<\/button><button type=\"button\" class=\"msq-opt\" data-opt=\"b\">7.14.2 for multi coin devices<\/button><button type=\"button\" class=\"msq-opt\" data-opt=\"c\">7.14.3, the Bitcoin only build, not yet published<\/button><\/div>\n<p class=\"msq-explain\" hidden><span class=\"msq-verdict\"><\/span>The <a href=\"https:\/\/github.com\/keepkey\/keepkey-firmware\/releases\/tag\/v7.14.3\" target=\"_blank\" rel=\"noopener\">7.14.3 release notes<\/a> list Taproot signing for the Bitcoin only image, and the <a href=\"https:\/\/docs.keepkey.com\/docs\/firmware\/release-status\" target=\"_blank\" rel=\"noopener\">status page<\/a> says it is in review and not published. <a class=\"msq-section\" href=\"#does-keepkey-support-taproot-and-a-bitcoin-only-firmware\">Read the section<\/a><\/p>\n<\/li>\n<\/ol>\n<div class=\"msq-result\" hidden><\/div>\n<\/div>\n<\/details>\n<script>(function(){\n  if (window.__msqInit) { return; }\n  window.__msqInit = true;\n  var root = document.getElementById('ms-quiz');\n  if (!root) { return; }\n  var meta = { slug: root.getAttribute('data-slug'), category: root.getAttribute('data-category'),\n               list: root.getAttribute('data-list') || '1' };\n  function qs(el, s){ return el.querySelector(s); }\n  function qsa(el, s){ return Array.prototype.slice.call(el.querySelectorAll(s)); }\n  function track(name, params){\n    try { if (typeof gtag === 'function') { var p = params || {}; p.article = meta.slug; gtag('event', name, p); } } catch (e) {}\n  }\n  function jumpList(missed){\n    if (!missed.length) { return ''; }\n    return '<ul class=\"msq-jump\">' + missed.map(function(q){\n      return '<li><a href=\"' + q.getAttribute('data-section') + '\">' + q.getAttribute('data-title') + '<\/a><\/li>';\n    }).join('') + '<\/ul>';\n  }\n  function emailForm(){\n    return '<div class=\"msq-sub\"><p><strong>Get the next one.<\/strong> We publish new articles on ' + meta.category\n      + ' most weeks and recheck this page on Sundays. Email me when a new article goes up or this page changes.<\/p>'\n      + '<form class=\"msq-form\" method=\"post\" action=\"\/mail\/form.php\" novalidate>'\n      + '<input type=\"hidden\" name=\"list\" value=\"' + meta.list + '\">'\n      + '<input type=\"hidden\" name=\"name\" value=\"\">'\n      + '<label class=\"msq-hp\" aria-hidden=\"true\">Leave this empty<input type=\"text\" name=\"website\" tabindex=\"-1\" autocomplete=\"off\"><\/label>'\n      + '<input type=\"email\" name=\"email\" placeholder=\"you@example.com\" required aria-label=\"Email address\" autocomplete=\"email\">'\n      + '<button type=\"submit\" class=\"msq-btn\">Email me the updates<\/button>'\n      + '<a href=\"#\" class=\"msq-no\">No thanks<\/a>'\n      + '<p class=\"msq-privacy\">We store your email and this page\\'s topic, nothing else. Unsubscribe any time.<\/p>'\n      + '<\/form><p class=\"msq-msg\" aria-live=\"polite\"><\/p><\/div>';\n  }\n  \/* The autoresponder always answers 200 with its own page. A \".msg.err\" box means the\n     address was rejected, \"You're subscribed\" means accepted, and a redirect only happens\n     after a successful subscribe. Same reading as the landing pages on the other sites. *\/\n  function sendForm(form){\n    return fetch(form.getAttribute('action'), { method: 'POST', body: new FormData(form), credentials: 'same-origin', redirect: 'manual' })\n      .then(function(res){\n        if (res.type === 'opaqueredirect') { return { status: 'ok' }; }\n        if (res.status === 404) { return { status: 'notlive' }; }\n        if (!res.ok) { throw new Error('HTTP ' + res.status); }\n        return res.text().then(function(t){\n          var doc = new DOMParser().parseFromString(t, 'text\/html');\n          var err = doc.querySelector('.msg.err');\n          if (err) {\n            var m = err.textContent.trim();\n            if (\/something went wrong\/i.test(m)) { throw new Error(m); }\n            return { status: 'rejected', message: m };\n          }\n          if (\/you.re subscribed\/i.test(doc.body.textContent)) { return { status: 'ok' }; }\n          return { status: 'unknown' };\n        });\n      });\n  }\n  function wireForm(sub){\n    var form = qs(sub, '.msq-form'), msg = qs(sub, '.msq-msg');\n    qs(form, '.msq-no').addEventListener('click', function(e){\n      e.preventDefault();\n      sub.innerHTML = '<p class=\"msq-msg\">No problem. The Sunday refresh keeps this page current either way.<\/p>';\n      track('quiz_email', { result: 'declined' });\n    });\n    form.addEventListener('submit', function(e){\n      e.preventDefault();\n      var input = qs(form, 'input[name=email]'), btn = qs(form, '.msq-btn');\n      var email = input.value.trim(); input.value = email;\n      if (!\/^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$\/.test(email)) { msg.textContent = 'That email does not look right.'; return; }\n      btn.disabled = true; btn.textContent = 'Sending';\n      function reset(){ btn.disabled = false; btn.textContent = 'Email me the updates'; }\n      sendForm(form).then(function(r){\n        if (r.status === 'ok' || r.status === 'unknown') {\n          sub.innerHTML = '<p class=\"msq-msg\"><strong>Done.<\/strong> We will email you when the next article on ' + meta.category\n            + ' goes up and when this page changes. If a confirmation email arrives, click it.<\/p>';\n          track('quiz_email', { result: r.status });\n          if (r.status === 'ok') { track('generate_lead', { method: 'quiz' }); }\n        } else if (r.status === 'notlive') {\n          msg.textContent = 'Sign up is not switched on yet for this site. Nothing was stored.'; reset();\n          track('quiz_email', { result: 'notlive' });\n        } else {\n          msg.textContent = r.message || 'Please check the email address and try again.'; reset();\n          track('quiz_email', { result: 'rejected' });\n        }\n      }).catch(function(){\n        msg.textContent = 'Could not reach the sign up service just now. Nothing was stored.'; reset();\n        track('quiz_email', { result: 'error' });\n      });\n    });\n  }\n  function finish(container, mode, score, total, missed){\n    var result = qs(container, '.msq-result');\n    track('quiz_complete', { mode: mode, score: score, total: total });\n    var h;\n    if (mode === 'pre') {\n      h = '<h3>You knew ' + score + ' of ' + total + ' before reading.<\/h3>';\n      h += (score === total) ? '<p>All of them. Read on anyway; the sections below carry the detail behind each answer.<\/p>'\n                             : '<p>The rest is below. Jump straight to what you missed:<\/p>' + jumpList(missed);\n      try { sessionStorage.setItem('msq-pre-' + meta.slug, String(score)); } catch (e) {}\n    } else {\n      var pre = null;\n      try { pre = sessionStorage.getItem('msq-pre-' + meta.slug); } catch (e) {}\n      h = '<h3>You got ' + score + ' of ' + total + '.<\/h3>';\n      if (pre !== null) { h += '<p>Before reading you had ' + pre + ' of ' + total + '.<\/p>'; }\n      if (missed.length) { h += '<p>Worth a second look:<\/p>' + jumpList(missed); }\n      h += emailForm();\n    }\n    result.innerHTML = h; result.hidden = false;\n    if (mode !== 'pre') { wireForm(qs(result, '.msq-sub')); }\n    result.scrollIntoView({ behavior: 'smooth', block: 'nearest' });\n  }\n  function setup(container, mode){\n    var qEls = qsa(container, '.msq-q'), answered = 0, score = 0, missed = [];\n    qEls.forEach(function(q){\n      var answer = q.getAttribute('data-answer'), opts = qsa(q, '.msq-opt'), explain = qs(q, '.msq-explain');\n      q.removeAttribute('data-done'); explain.hidden = true; qs(explain, '.msq-verdict').textContent = '';\n      opts.forEach(function(b){ b.disabled = false; b.classList.remove('is-right', 'is-wrong'); });\n      opts.forEach(function(b){\n        b.addEventListener('click', function(){\n          if (q.getAttribute('data-done')) { return; }\n          q.setAttribute('data-done', '1');\n          var ok = b.getAttribute('data-opt') === answer;\n          opts.forEach(function(o){ o.disabled = true; if (o.getAttribute('data-opt') === answer) { o.classList.add('is-right'); } });\n          if (ok) { score += 1; } else { b.classList.add('is-wrong'); missed.push(q); }\n          qs(explain, '.msq-verdict').textContent = ok ? 'Right. ' : 'Not quite. ';\n          explain.hidden = false;\n          answered += 1;\n          track('quiz_answer', { mode: mode, question: q.getAttribute('data-q'), correct: ok ? 1 : 0 });\n          if (answered === qEls.length) { finish(container, mode, score, qEls.length, missed); }\n        });\n      });\n    });\n  }\n  var box = qs(root, '.msq-box');\n  setup(root, 'pre');\n  if (box) { var skipFirst = box.hasAttribute('data-default-open'); box.addEventListener('toggle', function(){ if (!box.open) { return; } if (skipFirst) { skipFirst = false; return; } track('quiz_open', { mode: 'pre' }); }); }\n  \/* The end block sits far below this script, so it does not exist yet while this runs\n     during parsing. A delegated listener finds it at click time. *\/\n  document.addEventListener('click', function(e){\n    var startBtn = (e.target && e.target.closest) ? e.target.closest('.msq-start-test') : null;\n    if (!startBtn) { return; }\n    var end = startBtn.closest('.msq-end');\n    if (!end) { return; }\n    var mount = qs(end, '.msq-mount');\n    var clone = qs(root, '.msq-body').cloneNode(true);\n    var intro = qs(clone, '.msq-intro');\n    if (intro) { intro.textContent = 'The same five questions, now that you have read the page.'; }\n    var res = qs(clone, '.msq-result'); if (res) { res.hidden = true; res.innerHTML = ''; }\n    mount.innerHTML = ''; mount.appendChild(clone);\n    setup(mount, 'test');\n    startBtn.hidden = true;\n    track('quiz_open', { mode: 'test' });\n    mount.scrollIntoView({ behavior: 'smooth', block: 'start' });\n    var first = qs(mount, '.msq-opt'); if (first) { first.focus({ preventScroll: true }); }\n  });\n  \/* Shared tool behaviour: checklists remember their ticks on this device, and a chooser\n     shows the result for the option picked. Calculators carry their own small script. *\/\n  function initTools(){\n    qsa(document, '.msq-check').forEach(function(box){\n      var key = 'msq-check-' + meta.slug + '-' + (box.getAttribute('data-id') || 'x');\n      var boxes = qsa(box, 'input[type=checkbox]'), count = qs(box, '.msq-check-count');\n      var yes = qs(box, '.msq-verdict-yes'), no = qs(box, '.msq-verdict-no');\n      var saved = {};\n      try { saved = JSON.parse(localStorage.getItem(key) || '{}'); } catch (e) {}\n      boxes.forEach(function(cb, i){ if (saved[i]) { cb.checked = true; } });\n      function refresh(){\n        var n = boxes.filter(function(cb){ return cb.checked; }).length, state = {};\n        boxes.forEach(function(cb, i){ if (cb.checked) { state[i] = 1; } });\n        try { localStorage.setItem(key, JSON.stringify(state)); } catch (e) {}\n        if (count) { count.textContent = n + ' of ' + boxes.length + (box.getAttribute('data-verb') || ' done'); }\n        if (yes && no) { yes.hidden = n === 0; no.hidden = n !== 0; }\n      }\n      boxes.forEach(function(cb){ cb.addEventListener('change', function(){ refresh(); track('tool_check', { tool: box.getAttribute('data-id') }); }); });\n      refresh();\n    });\n    qsa(document, '.msq-choose').forEach(function(box){\n      var results = qsa(box, '.msq-choice-result');\n      qsa(box, 'input[type=radio]').forEach(function(r){\n        r.addEventListener('change', function(){\n          results.forEach(function(el){ el.hidden = el.getAttribute('data-for') !== r.value; });\n          track('tool_choose', { tool: box.getAttribute('data-id'), choice: r.value });\n        });\n      });\n    });\n  }\n  \/\/ read progress: how far down the article the reader has scrolled, fired once per quarter\n  (function(){\n    var art = root.closest('article') || root.parentNode, fired = {};\n    function check(){\n      var top = art.getBoundingClientRect().top + window.pageYOffset, h = art.offsetHeight || 1;\n      var seen = (window.pageYOffset + window.innerHeight - top) \/ h * 100;\n      [25, 50, 75, 100].forEach(function(m){ if (seen >= m && !fired[m]) { fired[m] = true; track('read_progress', { percent: m }); } });\n    }\n    window.addEventListener('scroll', check, { passive: true }); window.addEventListener('load', check);\n  })();\n  if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', initTools); } else { initTools(); }\n})();<\/script>\n<\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Most KeepKey reviews answer a different question: is it cheap and is the screen big? Both are true, and neither tells you whether anyone will fix the next bug. So this one reads the release record instead, on 17 October 2026, the day after two new builds appeared.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"is-the-keepkey-wallet-still-maintained-in-practice\">Is the KeepKey wallet still maintained in practice?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The answer lives in the <a href=\"https:\/\/github.com\/keepkey\/keepkey-firmware\/releases\" target=\"_blank\" rel=\"noopener\">KeepKey firmware releases on GitHub<\/a>, not on a review site. Counting published device releases by year, the pace was 9 in 2019, 3 in 2020, 10 in 2021, 5 in 2022, 3 in 2023 and 2 in 2024. Then it nearly stopped. <a href=\"https:\/\/github.com\/keepkey\/keepkey-firmware\/releases\/tag\/v7.10.0\" target=\"_blank\" rel=\"noopener\">Version 7.10.0<\/a>, dated 12 February 2025, was the only release that year, and its whole note reads \u201cAdd Taproot output support\u201d. Nothing followed for fourteen months.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">In 2026 the work came back. <a href=\"https:\/\/github.com\/keepkey\/keepkey-firmware\/releases\/tag\/v7.14.0\" target=\"_blank\" rel=\"noopener\">Version 7.14.0<\/a> arrived on 5 April with new chains, and <a href=\"https:\/\/github.com\/keepkey\/keepkey-firmware\/releases\/tag\/v7.14.1\" target=\"_blank\" rel=\"noopener\">version 7.14.1<\/a> on 5 June with security hardening across signature checks. Then, on 16 October 2026, two more builds were posted, both flagged as pre releases. <a href=\"https:\/\/github.com\/keepkey\/keepkey-firmware\/releases\/tag\/v7.14.2\" target=\"_blank\" rel=\"noopener\">Version 7.14.2<\/a> is described as \u201ca security release\u201d whose purpose is that what the device asks you to approve \u201cnow matches exactly what it signs.\u201d <a href=\"https:\/\/github.com\/keepkey\/keepkey-firmware\/releases\/tag\/v7.14.3\" target=\"_blank\" rel=\"noopener\">Version 7.14.3<\/a> is the first Bitcoin only build, with Taproot signing.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1600\" height=\"900\" src=\"https:\/\/getbitcoin.guide\/articles\/wp-content\/uploads\/2026\/10\/keepkey-wallet-review-chart.png\" alt=\"Bar chart of keepkey wallet firmware releases per year, falling from 10 in 2021 to 1 in 2025.\" class=\"wp-image-639\" srcset=\"https:\/\/getbitcoin.guide\/articles\/wp-content\/uploads\/2026\/10\/keepkey-wallet-review-chart.png 1600w, https:\/\/getbitcoin.guide\/articles\/wp-content\/uploads\/2026\/10\/keepkey-wallet-review-chart-300x169.png 300w, https:\/\/getbitcoin.guide\/articles\/wp-content\/uploads\/2026\/10\/keepkey-wallet-review-chart-1024x576.png 1024w, https:\/\/getbitcoin.guide\/articles\/wp-content\/uploads\/2026\/10\/keepkey-wallet-review-chart-768x432.png 768w, https:\/\/getbitcoin.guide\/articles\/wp-content\/uploads\/2026\/10\/keepkey-wallet-review-chart-1536x864.png 1536w\" sizes=\"auto, (max-width: 1600px) 100vw, 1600px\" \/><figcaption class=\"wp-block-image__caption\">Counted from the KeepKey firmware releases page on GitHub on 17 October 2026. The 2026 bar excludes the two pre releases posted on 16 October.<\/figcaption><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"which-keepkey-firmware-is-actually-published-today\">Which KeepKey firmware is actually published today?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">This is where the vendor\u2019s own pages and its GitHub disagree, and where a careful owner can trip. KeepKey\u2019s <a href=\"https:\/\/docs.keepkey.com\/docs\/firmware\/release-status\" target=\"_blank\" rel=\"noopener\">firmware release status page<\/a>, marked reviewed on 12 October 2026, still lists 7.14.1 as the only published build. Four days later GitHub carried files for two newer ones. The <a href=\"https:\/\/docs.keepkey.com\/docs\/faq\" target=\"_blank\" rel=\"noopener\">KeepKey FAQ<\/a> agrees with the status page: \u201cThe latest firmware release is 7.14.1.\u201d<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><th>Version<\/th><th>KeepKey status page, 12 Oct 2026<\/th><th>GitHub, 17 Oct 2026<\/th><th>What it changes<\/th><\/tr><\/thead><tbody><tr><td>7.14.1<\/td><td>Published<\/td><td>Full release, 5 Jun 2026<\/td><td>Solana, TON and Tron message signing, hardening<\/td><\/tr><tr><td>7.14.2<\/td><td>Final QA, merged, not published<\/td><td>Pre release, 16 Oct 2026<\/td><td>Screens match what is signed; no new features<\/td><\/tr><tr><td>7.14.3<\/td><td>In upstream review, not published<\/td><td>Pre release, 16 Oct 2026<\/td><td>Bitcoin only image with Taproot signing<\/td><\/tr><tr><td>7.15<\/td><td>In upstream review<\/td><td>No release<\/td><td>Not described in a release note<\/td><\/tr><tr><td>7.16<\/td><td>Candidate<\/td><td>Tag only, no release<\/td><td>Not described in a release note<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">The practical rule that follows is boring and correct. Install firmware only through the update screen in KeepKey\u2019s own desktop app, and treat a GitHub pre release as unfinished until the status page calls it published. If you do build or download one, the release notes print the expected hash and point to KeepKey\u2019s guide to <a href=\"https:\/\/keepkey.com\/blog\/verifying_keepkey_firmware\" target=\"_blank\" rel=\"noopener\">verifying KeepKey firmware<\/a>.<\/p>\n\n\n\n<div class=\"msq-tool msq-check\" data-id=\"kk-update-check\" data-verb=\" done\">\n<h3>Before you update a KeepKey<\/h3>\n<p>Practical checks drawn from KeepKey&#8217;s own release notes and status page. Nothing here asks for your words.<\/p>\n<label><input type=\"checkbox\">My written backup is in my hands and readable before I start<\/label>\n<label><input type=\"checkbox\">I am updating through the update screen in KeepKey&#8217;s own desktop app<\/label>\n<label><input type=\"checkbox\">The version offered matches one the release status page calls published<\/label>\n<label><input type=\"checkbox\">I am not loading a GitHub pre release file by hand<\/label>\n<label><input type=\"checkbox\">I will read every confirmation on the device screen, not just the computer<\/label>\n<label><input type=\"checkbox\">I will never give my recovery words to a website, a support chat or any form<\/label>\n<p class=\"msq-check-count\"><\/p>\n<p class=\"msq-note\">General information only, not personal financial advice.<\/p>\n<\/div>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"what-happened-to-keepkey-after-shapeshift\">What happened to KeepKey after ShapeShift?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">KeepKey\u2019s own <a href=\"https:\/\/keepkey.com\/blog\/keepkey__a_history_of_hardware_wallet_innovation\" target=\"_blank\" rel=\"noopener\">company history<\/a>, dated 30 April 2025, gives the outline. It was founded in 2014 and bought by ShapeShift in 2017. When ShapeShift turned itself into a DAO in 2021, KeepKey went its own way under former ShapeShift engineers. The footer on keepkey.com now reads KeepKey LLC, Denver, and the FAQ says KeepKey \u201chas been independent of ShapeShift for several years.\u201d<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The release record fits that story. 2021 was the busiest year on GitHub, ten releases, including <a href=\"https:\/\/github.com\/keepkey\/keepkey-firmware\/releases\/tag\/v7.0.3\" target=\"_blank\" rel=\"noopener\">version 7.0.3<\/a>, whose note was later marked as containing a critical vulnerability and superseded within three weeks. After the split the cadence fell year by year until 2025.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"what-does-a-keepkey-protect-against-and-what-does-it-not\">What does a KeepKey protect against, and what does it not?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">A KeepKey keeps your keys off your computer and shows each transaction on its own screen, which is the main job of any hardware signer. What it does not have is a secure element. KeepKey\u2019s <a href=\"https:\/\/docs.keepkey.com\/docs\/security\" target=\"_blank\" rel=\"noopener\">security page<\/a> says production devices use a \u201cgeneral-purpose microcontroller rather than a dedicated secure element.\u201d The product page makes a virtue of it: \u201cNo Proprietary Secure Element, By Design.\u201d<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1376\" height=\"768\" src=\"https:\/\/getbitcoin.guide\/articles\/wp-content\/uploads\/2026\/10\/close-up-keepkey-wallet-and-seed-backup.jpg\" alt=\"Close up of a dark keepkey wallet on a desk mat beside a blank steel backup card and a pen.\" class=\"wp-image-634\" srcset=\"https:\/\/getbitcoin.guide\/articles\/wp-content\/uploads\/2026\/10\/close-up-keepkey-wallet-and-seed-backup.jpg 1376w, https:\/\/getbitcoin.guide\/articles\/wp-content\/uploads\/2026\/10\/close-up-keepkey-wallet-and-seed-backup-300x167.jpg 300w, https:\/\/getbitcoin.guide\/articles\/wp-content\/uploads\/2026\/10\/close-up-keepkey-wallet-and-seed-backup-1024x572.jpg 1024w, https:\/\/getbitcoin.guide\/articles\/wp-content\/uploads\/2026\/10\/close-up-keepkey-wallet-and-seed-backup-768x429.jpg 768w\" sizes=\"auto, (max-width: 1376px) 100vw, 1376px\" \/><figcaption class=\"wp-block-image__caption\">With no secure element, the words and a strong passphrase carry more of the load than the chip does.<\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">The cost of that choice was measured in public. On 10 December 2019, <a href=\"https:\/\/blog.kraken.com\/product\/security\/flaw-found-in-keepkey-crypto-hardware-wallet\" target=\"_blank\" rel=\"noopener\">Kraken Security Labs<\/a> showed it could extract the encrypted seed by voltage glitching with about 15 minutes of physical access, using a tool it estimated at around $75, and said the flaw was hard to fix \u201cwithout a hardware redesign.\u201d The short PIN protecting the extracted seed can then be guessed.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The defence both Kraken and KeepKey name is a strong passphrase, because it is not stored on the device and creates a separate wallet. That only helps if the passphrase is long, secret and backed up as carefully as the words. A lost passphrase locks you out just as completely as a thief is locked out.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">One small oddity for the spec sheet collectors: the security page names the chip as an STM32F205, while the <a href=\"https:\/\/keepkey.com\/product\" target=\"_blank\" rel=\"noopener\">product page<\/a> lists an STM32F405. Either way it is a general purpose chip. Devices with a secure element, such as the <a href=\"https:\/\/getbitcoin.guide\/articles\/bitbox02-review\/\">BitBox02 and its two chip design<\/a> or the <a href=\"https:\/\/getbitcoin.guide\/articles\/trezor-safe-5-review\/\">Trezor Safe 5 with its EAL6+ secure element<\/a>, answer the stolen device problem differently.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"does-keepkey-support-taproot-and-a-bitcoin-only-firmware\">Does KeepKey support Taproot and a Bitcoin only firmware?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Partly, and the wording matters. Version 7.10.0 in February 2025 added Taproot output support, which lets you send to a Taproot address. Taproot signing, spending from Taproot yourself, appears in the 7.14.3 Bitcoin only build, which the status page says is not published. The release note adds that \u201cMulti-coin devices stay on v7.14.2.\u201d So, as of 17 October 2026, a Bitcoin only KeepKey exists as a pre release file and not yet as something the app hands you.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A multi coin firmware carries code for every chain it signs. The 7.14.2 security fix was almost entirely about those other chains: EVM token names, THORChain assets, blind signing paths. Readers weighing <a href=\"https:\/\/getbitcoin.guide\/articles\/crypto-wallet-open-source\/\">how much of a wallet you can actually inspect<\/a> will note that KeepKey publishes reproducible build instructions for every recent release.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1376\" height=\"768\" src=\"https:\/\/getbitcoin.guide\/articles\/wp-content\/uploads\/2026\/10\/woman-connecting-keepkey-wallet-to-laptop.jpg\" alt=\"A woman at a home desk plugs a keepkey wallet into her laptop with a USB cable.\" class=\"wp-image-635\" srcset=\"https:\/\/getbitcoin.guide\/articles\/wp-content\/uploads\/2026\/10\/woman-connecting-keepkey-wallet-to-laptop.jpg 1376w, https:\/\/getbitcoin.guide\/articles\/wp-content\/uploads\/2026\/10\/woman-connecting-keepkey-wallet-to-laptop-300x167.jpg 300w, https:\/\/getbitcoin.guide\/articles\/wp-content\/uploads\/2026\/10\/woman-connecting-keepkey-wallet-to-laptop-1024x572.jpg 1024w, https:\/\/getbitcoin.guide\/articles\/wp-content\/uploads\/2026\/10\/woman-connecting-keepkey-wallet-to-laptop-768x429.jpg 768w\" sizes=\"auto, (max-width: 1376px) 100vw, 1376px\" \/><figcaption class=\"wp-block-image__caption\">Firmware goes on through the update screen in KeepKey\u2019s own app, not from a pre release file.<\/figcaption><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"what-does-a-keepkey-cost-and-why-do-the-prices-disagree\">What does a KeepKey cost, and why do the prices disagree?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Pages ranking for this device printed four different prices, from $49 to $99, when this site checked them on 11 October 2026, which is what happens when nobody checks twice. The vendor is not much tidier. On 17 October 2026 the <a href=\"https:\/\/keepkey.com\/product\" target=\"_blank\" rel=\"noopener\">KeepKey product page<\/a> showed $59.95 with free US shipping, while the <a href=\"https:\/\/www.keepkey.com\/coin-support\" target=\"_blank\" rel=\"noopener\">supported coins page<\/a> was indexed with $49.95. KeepKey\u2019s security page lists supply chain attacks among the risks its fixes cannot remove, and the price on the official site is the one that is checkable.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"what-do-keepkey-owners-actually-report\">What do KeepKey owners actually report?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">This review drew on 13 public accounts from the last three years: four issue threads on the KeepKey Desktop GitHub, one Reddit thread with three replies, and the eight newest reviews on Trustpilot. These are what people report, not measurements. None of them described coins lost to a device fault. Almost all described the software around the device.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">In May 2026, on <a href=\"https:\/\/www.reddit.com\/r\/keepkeydevs\/comments\/1tien2j\/updating_firmware\/\" target=\"_blank\" rel=\"noopener\">r\/keepkeydevs<\/a>, an owner stuck on firmware 7.10.0 said neither KeepKey Vault nor KeepKey Desktop offered an update, and that the site gave conflicting advice on which app was current. KeepKey support replied that 7.14.0 was \u201cin alpha\u201d behind a setting in the Vault app, although GitHub had labelled it a full release in April.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">In <a href=\"https:\/\/github.com\/keepkey\/keepkey-desktop\/issues\/681\" target=\"_blank\" rel=\"noopener\">a July 2025 GitHub issue<\/a>, a Linux user said the old python library they used with Electrum had broken, and the desktop app stuck on its connect screen. Support answered two days later with a udev rule. In <a href=\"https:\/\/github.com\/keepkey\/keepkey-desktop\/issues\/680\" target=\"_blank\" rel=\"noopener\">a November 2024 issue<\/a>, a Windows user reported trying about 50 times to get past the label screen during setup. An <a href=\"https:\/\/github.com\/keepkey\/keepkey-desktop\/issues\/677\" target=\"_blank\" rel=\"noopener\">October 2024 issue<\/a> about a passphrase box that would not accept typing in the Linux app was still open on 17 October 2026.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/www.trustpilot.com\/review\/keepkey.com\" target=\"_blank\" rel=\"noopener\">Trustpilot<\/a> showed 2.8 out of 5 from 285 reviews and none in the last twelve months, which says more about how quiet the shop has been than about the device. The pattern matches the release record: the signer itself is simple, and the friction lives in apps, updaters and support links that have changed names.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"how-does-keepkey-compare-with-other-open-source-signers\">How does KeepKey compare with other open source signers?<\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><th>Question<\/th><th>KeepKey on 17 Oct 2026<\/th><th>Source<\/th><\/tr><\/thead><tbody><tr><td>Secure element<\/td><td>None, general purpose chip<\/td><td><a href=\"https:\/\/docs.keepkey.com\/docs\/security\" target=\"_blank\" rel=\"noopener\">KeepKey security page<\/a><\/td><\/tr><tr><td>Latest published firmware<\/td><td>7.14.1, June 2026<\/td><td><a href=\"https:\/\/docs.keepkey.com\/docs\/firmware\/release-status\" target=\"_blank\" rel=\"noopener\">KeepKey status page<\/a><\/td><\/tr><tr><td>Newest builds<\/td><td>7.14.2 and 7.14.3, pre release, 16 Oct 2026<\/td><td><a href=\"https:\/\/github.com\/keepkey\/keepkey-firmware\/releases\" target=\"_blank\" rel=\"noopener\">GitHub releases<\/a><\/td><\/tr><tr><td>Taproot<\/td><td>Send to Taproot since Feb 2025; signing only in unpublished Bitcoin only build<\/td><td><a href=\"https:\/\/github.com\/keepkey\/keepkey-firmware\/releases\/tag\/v7.14.3\" target=\"_blank\" rel=\"noopener\">v7.14.3 notes<\/a><\/td><\/tr><tr><td>Connection<\/td><td>USB only<\/td><td><a href=\"https:\/\/keepkey.com\/product\" target=\"_blank\" rel=\"noopener\">KeepKey product page<\/a><\/td><\/tr><tr><td>Price on the vendor site<\/td><td>$59.95 product page, $49.95 on another page<\/td><td><a href=\"https:\/\/keepkey.com\/product\" target=\"_blank\" rel=\"noopener\">KeepKey product page<\/a><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Against the <a href=\"https:\/\/getbitcoin.guide\/articles\/trezor-hardware-wallet\/\">Trezor range<\/a> and the BitBox02, KeepKey trades a secure element for a large screen and a low price. That trade suits someone whose main threat is malware on a laptop and who keeps the device somewhere safe. It suits less well someone whose threat is the device being taken. Whatever you use, your words belong only in the device\u2019s own restore process, never in a website, a support chat or a form, and <a href=\"https:\/\/getbitcoin.guide\/articles\/your-recovery-phrase\/\">how to store a recovery phrase<\/a> covers the part no firmware can fix. This page describes a device and its upkeep. It is not advice to buy, sell or hold anything.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"frequently-asked-questions\">Frequently asked questions<\/h2>\n\n\n<div id=\"rank-math-faq\" class=\"rank-math-block\">\n<div class=\"rank-math-list \">\n<div id=\"faq-q-1\" class=\"rank-math-list-item\">\n<h3 class=\"rank-math-question \">Is KeepKey still in business?<\/h3>\n<div class=\"rank-math-answer \">\n\n<p>Yes. KeepKey LLC in Denver runs keepkey.com and published firmware 7.14.1 in June 2026, with two more builds posted as pre releases on 16 October 2026.<\/p>\n\n<\/div>\n<\/div>\n<div id=\"faq-q-2\" class=\"rank-math-list-item\">\n<h3 class=\"rank-math-question \">Is KeepKey owned by ShapeShift?<\/h3>\n<div class=\"rank-math-answer \">\n\n<p>No longer. ShapeShift bought KeepKey in 2017, and the company says it has been independent since ShapeShift became a DAO in 2021.<\/p>\n\n<\/div>\n<\/div>\n<div id=\"faq-q-3\" class=\"rank-math-list-item\">\n<h3 class=\"rank-math-question \">How do I update KeepKey firmware?<\/h3>\n<div class=\"rank-math-answer \">\n\n<p>Through KeepKey\u2019s desktop app. KeepKey support says that holding the button while plugging the device in opens updater mode, and the app walks you through it.<\/p>\n\n<\/div>\n<\/div>\n<div id=\"faq-q-4\" class=\"rank-math-list-item\">\n<h3 class=\"rank-math-question \">Does KeepKey work with Electrum?<\/h3>\n<div class=\"rank-math-answer \">\n\n<p>It has in the past through a python library. One owner reported in July 2025 that this route had broken for them, so check current support before relying on it.<\/p>\n\n<\/div>\n<\/div>\n<div id=\"faq-q-5\" class=\"rank-math-list-item\">\n<h3 class=\"rank-math-question \">Does KeepKey have Bluetooth?<\/h3>\n<div class=\"rank-math-answer \">\n\n<p>No. The product page lists standard USB for power and data and names no wireless connection.<\/p>\n\n<\/div>\n<\/div>\n<div id=\"faq-q-6\" class=\"rank-math-list-item\">\n<h3 class=\"rank-math-question \">What happens if my KeepKey breaks?<\/h3>\n<div class=\"rank-math-answer \">\n\n<p>Your coins are not on the device. The 12 or 24 word backup, plus any passphrase, restores them on a compatible wallet, which is why that backup matters more than the hardware.<\/p>\n\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n\n\n<div class=\"msq-end\" id=\"ms-quiz-end\">\n<p><strong>Finished the page?<\/strong> The same five questions from the top, to see what stuck.<\/p>\n<button type=\"button\" class=\"msq-btn msq-start-test\">Test Your Understanding of This Article<\/button>\n<div class=\"msq-mount\"><\/div>\n<\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p class=\"wp-block-paragraph\"><em>This article is educational and is not financial advice. Nothing here is a recommendation to buy, sell or hold anything. You are responsible for your own security decisions.<\/em><\/p>\n","protected":false},"excerpt":{"rendered":"<p>KeepKey firmware release history read from GitHub on 17 October 2026, the four firmware versions the vendor\u2019s own status page tracks, the two prices keepkey.com prints at once, and what owners report about the apps around the device.<\/p>\n","protected":false},"author":1,"featured_media":633,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","rank_math_title":"KeepKey Wallet Review: Is the Firmware Still Maintained?","rank_math_description":"The KeepKey wallet is still maintained: two firmware releases in 2026 and a security fix in pre release on 16 October. No secure element, though.","rank_math_focus_keyword":"keepkey wallet","rank_math_canonical_url":"","rank_math_breadcrumb_title":"","rank_math_facebook_title":"","rank_math_facebook_description":"","rank_math_facebook_image":"","rank_math_twitter_title":"","rank_math_twitter_description":"","rank_math_twitter_image":"","rank_math_pillar_content":"","rank_math_robots":[],"rank_math_advanced_robots":[]},"categories":[2],"tags":[],"class_list":["post-636","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-wallets"],"_links":{"self":[{"href":"https:\/\/getbitcoin.guide\/articles\/wp-json\/wp\/v2\/posts\/636","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/getbitcoin.guide\/articles\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/getbitcoin.guide\/articles\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/getbitcoin.guide\/articles\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/getbitcoin.guide\/articles\/wp-json\/wp\/v2\/comments?post=636"}],"version-history":[{"count":4,"href":"https:\/\/getbitcoin.guide\/articles\/wp-json\/wp\/v2\/posts\/636\/revisions"}],"predecessor-version":[{"id":642,"href":"https:\/\/getbitcoin.guide\/articles\/wp-json\/wp\/v2\/posts\/636\/revisions\/642"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/getbitcoin.guide\/articles\/wp-json\/wp\/v2\/media\/633"}],"wp:attachment":[{"href":"https:\/\/getbitcoin.guide\/articles\/wp-json\/wp\/v2\/media?parent=636"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/getbitcoin.guide\/articles\/wp-json\/wp\/v2\/categories?post=636"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/getbitcoin.guide\/articles\/wp-json\/wp\/v2\/tags?post=636"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}