Tools and scripts

PRPriorityReviewabilityReviewsAgreementSize
(+)#35814 carloantinarella contrib: Autogenerate bitcoin-cli bash completion file from getopenrpcinfo
  • Autogenerate bitcoin-cli bash completions directly from RPC metadata
  • Stop completions from falling out of sync whenever RPC commands or arguments change
  • Add shell autocompletion support for named RPC arguments
P3 · developer tool
  • P3 because it automates bash completions to keep them in sync with RPC changes
  • Improves CLI ergonomics for operators and developers by adding named argument completion
Ready
  • Ready for review, applies cleanly with passing CI
0
  • No review verdicts recorded
Crickets
  • No reviews or comments have been posted yet
  • Awaiting initial feedback from maintainers and CLI users
0 + 1,574 tests
  • 0 lines added or modified outside tests
  • 1,574 lines added or modified in tests
  • 68 lines removed in total
  • 3 files, 2 commits
(+)#36190 Bortlesboat test: Check bitcoin wrapper child exit status on windows
  • Verify that the Windows bitcoin wrapper blocks until its child finishes and correctly forwards exit codes
  • Ensure scripts and callers invoking bitcoind via the wrapper get reliable exit codes and error reports
P3 · test coverage
  • P3 because it validates wrapper tool behavior on Windows
  • Ensures exit codes are preserved reliably for scripts and callers invoking the wrapper
Review #36105 first
  • Review #36105 first
  • Code is ready, but it depends on the runtime wrapper fixes in base PR #36105
1Strong
  • Strong support with cross-platform testing
  • Verified on native Windows runners with UCRT and MSVCRT (cyb3ralbert)
  • Supported splitting this test out into a dedicated PR (ryanofsky)
27 + 52 tests
  • 27 lines added or modified outside tests
  • 52 lines added or modified in tests
  • 19 lines removed in total
  • 6 files, 6 commits
(+)#36106 ryanofsky bitcoin wrapper: respect CMAKE_INSTALL_BINDIR/LIBEXECDIR
  • Allow distributions with custom install paths to run the bitcoin wrapper without execution errors
  • Fixes broken binary discovery when launching components on systems like Arch Linux
P3 · bug fix
  • P3 because it resolves a complete failure of the wrapper executable on affected distributions
  • Users on distributions like Arch Linux can invoke wrapper subcommands reliably
Ready
  • Ready to review
  • Code is clean, test suite issues are resolved, and CI is passing
0
Strong
  • Strong support across reviewers with all prior feedback addressed
  • Approach approved after testing with custom install prefixes (hebasto)
  • Verified by testing on Arch Linux directory layouts (cyb3ralbert)
42 + 71 tests
  • 42 lines added or modified outside tests
  • 71 lines added or modified in tests
  • 6 lines removed in total
  • 6 files, 2 commits
(+)#27409 ryanofsky Make GUI and CLI tools use the same datadir
  • Ensure CLI tools automatically use the custom data directory selected in the GUI
  • Prevent tools from downloading blocks to the wrong location or missing user wallets
P3 · cleanup
  • P3 because bitcoin-wallet ignores configuration files placed in the custom datadir
  • Brings bitcoin-wallet configuration handling into parity with other CLI binaries
Author reworking
  • Author stated it is not ready while working on complex Qt tests
  • PR is currently marked draft and needs a rebase
0
  • No review verdicts recorded
Mild
  • Positive concept feedback on resolving long-standing datadir divergence
  • Welcomed as closing issue 8106 (pinheadmz)
  • Clarified that custom datadir config files are still loaded properly (luke-jr)
455 + 10 tests
  • 455 lines added or modified outside tests
  • 10 lines added or modified in tests
  • 103 lines removed in total
  • 13 files, 3 commits
(+)#36105 ryanofsky bitcoin wrapper: Fix Windows exec so wrapper waits for child process
  • Make the Windows bitcoin wrapper wait for child processes to finish and propagate their exit codes
  • Allow test frameworks and caller scripts on Windows to capture output and monitor child exit status
P3 · bug fix
  • P3 because the Windows CLI wrapper terminated immediately instead of awaiting subcommands
  • Enables scripts and users on Windows to receive accurate exit codes and output
Ready
  • Ready to review
  • All CI checks are passing and recent review comments have been addressed
0
Mild
  • Strong support for fixing Windows child process waiting without objections to the approach
  • Concept approval and runtime error handling review (hodlinator)
  • Concept approval with notes on future UCRT transitions (hebasto)
  • Collaborated on child exit code resolution logic (Bortlesboat)
27 + 11 tests
  • 27 lines added or modified outside tests
  • 11 lines added or modified in tests
  • 20 lines removed in total
  • 6 files, 4 commits
(+)#35788 ajtowns bitcoin-util: Add evalscript subcommand
  • Let script developers evaluate isolated script fragments offline using node consensus rules
  • Avoids needing to construct full transactions in test harnesses to debug scripts
P3 · new feature
  • P3 because it adds an offline CLI tool for developers to evaluate scripts directly
  • Reduces reliance on custom test scripts and third-party interpreters
Ready
  • Worth reviewing now with a clean mergeable state and passing CI
  • Open test coverage feedback is an optional improvement rather than a blocker
1Strong
  • Positive sentiment with no objections raised
  • Verified by testing script unit tests and taproot features (jeanpablojp)
  • Suggested adding test coverage for the transaction option (jeanpablojp)
325 + 235 tests
  • 325 lines added or modified outside tests
  • 235 lines added or modified in tests
  • 17 lines removed in total
  • 13 files, 4 commits
(+)#36151 aman21-droid makeseeds: fix off-by-one in field count check
  • Prevent seed generation tooling from crashing on malformed crawler output during release preparation
P3 · bug fix
  • P3 because this is a minor fix to release seed generation tooling used only by maintainers
  • Prevents a crash on malformed inputs without altering normal seed generation behavior
  • Ranking pass: Moved up 7: seed generation is the first thing this category says matters; a crash in makeseeds during release preparation outranks developer helper scripts even though the fix is small.
Ready
  • Ready to review
  • Open question remains on whether to keep or remove the added unit tests
1
Positive
  • Support and testing for the bug fix (l0rinc)
  • Questioned whether unit tests are worthwhile for a rarely used script (achow101)
  • Author offered to drop the test commit if maintainers prefer
0 + 22 tests
  • 0 lines added or modified outside tests
  • 22 lines added or modified in tests
  • 1 lines removed in total
  • 1 files, 2 commits
(+)#35608 HowHsu contrib: Skip llvm-cov rendering for deterministic fuzz inputs
  • Accelerate fuzz coverage determinism checks by skipping redundant report rendering
  • Save developer time during long fuzz testing runs
P3 · speedup
  • P3 because it provides a substantial speedup for an offline developer helper script
  • Cuts execution times from hours down to minutes on larger fuzz targets
  • Ranking pass: Moved down 7: a large speedup, but it only affects an offline fuzz-coverage helper, which the category ranks below tool correctness and seed/wallet tooling.
Ready
  • Ready for review, with CI passing and all reviewer feedback addressed
0 (+1)
Strong
  • Strong support with confirmed performance gains and accepted cleanups
  • Verified massive speedup across fuzz corpora testing (jeanpablojp)
  • Approved with code simplification suggestions adopted by the author (maflcko)
0 + 71 tests
  • 0 lines added or modified outside tests
  • 71 lines added or modified in tests
  • 36 lines removed in total
  • 1 files, 1 commits
(+)#35167 ajtowns Convert check-deps.sh to python
  • Automate library dependency boundary enforcement directly from documentation diagrams
  • Eliminate manual dependency tracking and fix macOS symbol parsing false passes
P3 · cleanup
  • P3 because it simplifies internal tool maintenance without affecting node operators
  • Resolves macOS symbol demangling bugs to make local boundary checks reliable
  • Ranking pass: Moved down 5: internal dependency-check tooling with a real macOS false-pass fix, but below user-facing tool fixes in this category.
Needs rebase
  • Needs rebase due to merge conflicts with master while author has been inactive
1Mild
  • Broad concept support for migrating dependency checks to Python (sedited, ryanofsky)
  • Verified symbol parsing fixes on macOS (janb84)
  • Nonblocking objection: moving init code breaks logging in auxiliary binaries (ryanofsky)
  • Nonblocking objection: prefers suppressions over adding undesirable dependency edges (ryanofsky)
5 + 291 tests
  • 5 lines added or modified outside tests
  • 291 lines added or modified in tests
  • 219 lines removed in total
  • 5 files, 4 commits
(+)#36022 cyb3ralbert test: add coverage for bitcoin wrapper argument handling
  • Verify command-line argument parsing and error handling in the bitcoin CLI wrapper
  • Prevents regressions when users request help or version information or pass invalid options
P3 · test coverage
  • P3 because it exercises untested argument parsing and early exit paths in the wrapper tool
  • Raises test coverage for the wrapper from zero to nearly half without affecting core consensus
Ready
  • Ready for review with all CI checks passing and previous feedback addressed
0
  • No review verdicts recorded
Positive
  • Constructive feedback on instrumenting tests under Valgrind addressed by the author (mercie-ux)
  • No open objections or unresolved concerns
0 + 51 tests
  • 0 lines added or modified outside tests
  • 51 lines added or modified in tests
  • 0 lines removed in total
  • 1 files, 2 commits
(+)#19460 ryanofsky multiprocess: Add bitcoin-wallet -ipcconnect option
  • Allow the wallet tool to connect directly to a running node over IPC
  • Lays the transport foundation for future online wallet subcommands without HTTP RPC
P3 · new feature
  • P4 because it only verifies socket connectivity and adds no operational subcommands
  • The tool cannot yet perform node-backed user actions over the new connection option
Waiting on author
  • Review #29409 first
  • Stacked on top of unmerged multiprocess prerequisite PRs #29409 and #10102
0
  • No review verdicts recorded
Blocked
  • Unaddressed question whether adding IPC to an offline CLI tool creates user footguns (ajtowns)
  • Cautioned against conflating offline wallet tooling with online daemon features (jonasschnelli)
  • Author clarified that standard offline wallet usage remains intact and default
3,873 + 135 tests
  • 3,873 lines added or modified outside tests
  • 135 lines added or modified in tests
  • 549 lines removed in total
  • 139 files, 25 commits
(+)#35831 pablomartin4btc argsman, cli: Allow options after non-option arguments (GNU-style)
  • Allow CLI options to be placed after commands without being silently ignored or misparsed
  • Prevents confusing errors or targeting the wrong wallet when passing options after an RPC command
P3 · bug fix
  • P3 because it brings consistent option handling after positional arguments to offline tools
  • Improves usability for tools like bitcoin-tx and bitcoin-wallet when passing trailing options
Ready
  • Ready to review because the author addressed previous feedback on edge cases and CI passes
1
Strong
  • Strong support across the approach with edge cases tested and addressed
  • Full support after suggesting edge-case fixes that the author incorporated (w0xlt)
  • Verified tool consistency after concerns about bitcoin-tx behavior were resolved (vicjuma)
103 + 182 tests
  • 103 lines added or modified outside tests
  • 182 lines added or modified in tests
  • 38 lines removed in total
  • 7 files, 3 commits
(+)#35903 CapThunder19 contrib: fix crash in message-capture-parser.py on non-printable msgtype
  • Prevent message capture parser crashes when encountering unprintable message types
  • Ensure developers analyzing network traffic can parse full capture files without losing output
P4 · bug fix
  • P4 because message capture parsing is a niche developer script with low overall usage
  • Fixes a genuine script crash but only impacts developers inspecting traffic captures
  • Ranking pass: Moved up 5: among the niche contrib script fixes it is the clearest crash-with-total-output-loss, so it leads the P4 script group.
Ready
  • Ready to review because the change is tiny and CI passes
0
  • No review verdicts recorded
Crickets
  • No formal reviews or approvals yet
  • Questioned whether the crash remains reachable after recent message validation changes (sedited)
0 + 2 tests
  • 0 lines added or modified outside tests
  • 2 lines added or modified in tests
  • 4 lines removed in total
  • 1 files, 1 commits
(+)#36157 aman21-droid contrib: fix dead null-byte check in linearize-data.py
  • Prevent linearize-data.py from hanging indefinitely on zero-padded block files
  • Ensure the script cleanly finishes or advances to the next file instead of looping forever
P4 · bug fix
  • P4 after comparing with the other PRs here (assessed alone as P3): Lowered to P4 for consistency with #31888, the other linearize-data.py fix: a reliable hang, but in a niche offline contrib script.
  • P3 because it resolves an infinite read loop in a niche offline utility
  • The tool has a limited user base so this is routine maintenance rather than an urgent fix
Ready
  • Ready for review
  • Clean one-line fix with a straightforward reproduction step
0
  • No review verdicts recorded
Crickets
  • No reviews or comments yet
  • Recently opened PR awaiting initial feedback
0 + 1 tests
  • 0 lines added or modified outside tests
  • 1 lines added or modified in tests
  • 1 lines removed in total
  • 1 files, 1 commits
(+)#31888 midnightmagic contrib: Support re-writing linearize-data dumps
  • Let linearize-data rerun safely without truncating existing dumps to zero bytes
  • Prevent disruptions to processes reading linearize output while it runs
  • Ensure obsolete trailing block data is removed after chain reorganizations
P4 · bug fix
  • P4 because linearize-data is a niche offline contrib script rather than essential tooling
  • Only affects operators who repeatedly rerun block data linearization in place
  • Ranking pass: Moved up 5 to sit next to #36157, the other linearize-data.py fix, since the two overlap and should be looked at together.
Author silent
  • Author agreed to update the commit message and description but has been silent
1
Strong
  • Strong support with no remaining objections
  • Helps downstream users rerunning dumps without hurting existing workflows (sedited)
  • Initial question about the file open mode rationale was clarified (theStack)
0 + 6 tests
  • 0 lines added or modified outside tests
  • 6 lines added or modified in tests
  • 1 lines removed in total
  • 1 files, 1 commits
(+)#35809 HowHsu contrib: add deterministic fuzz coverage mode
  • Let fuzz developers run only individual or combined coverage checks instead of always running both
  • Saves significant time when debugging specific fuzz determinism failures or cross-input state leaks
P4 · new feature
  • P4 because it adds a minor convenience flag to an offline developer script in contrib
  • Saves time for developers diagnosing fuzz coverage nondeterminism
  • Affects only a niche internal developer tool with no impact on core development
Ready
  • Ready for review
  • Clean patch with passing CI and only a trivial unaddressed documentation nit
2 (+1)Strong
  • Strong consensus with multiple approvals and no objections
  • Approved after author switched CLI arguments to string mode (maflcko)
  • Verified by code review and testing (Crypt-iQ, marcofleon)
  • Verified earlier version by testing on instrumented binaries (jeanpablojp)
0 + 83 tests
  • 0 lines added or modified outside tests
  • 83 lines added or modified in tests
  • 43 lines removed in total
  • 2 files, 1 commits
(+)#33828 151henry151 Check required interfaces before generating manpages
  • Prevents maintainers from accidentally generating incomplete manpages when build options are missing
  • Ensures release documentation does not silently drop wallet or ZMQ command-line options
P4 · bug fix
  • P4 because it only protects an infrequent release-preparation workflow
  • Prevents accidental omission of CLI documentation during manual manpage generation
Author silent
  • Author has been silent for months awaiting build maintainer input on CMake conventions
0 (+1)
Mild
  • Concept approval and request for re-review (sedited)
  • Concern raised about mixing compile definitions and header defines (maflcko)
  • Awaiting feedback from build maintainers on CMake naming conventions
3 + 53 tests
  • 3 lines added or modified outside tests
  • 53 lines added or modified in tests
  • 0 lines removed in total
  • 2 files, 1 commits
(+)#35569 purpleKarrot Encapsulation for CTransaction
  • Decouple transaction internal storage representation from caller code
  • Lay the groundwork for future transaction memory optimizations
P4 · new feature
  • P4 after comparing with the other PRs here (assessed alone as P3): Lowered to P4: within tools its contribution is a reusable bitcoin-tidy check with speculative payoff, the same treatment given to #35054, whose tools-relevant part is one maintenance script.
  • P3 because it adds an automated tooling check to rewrite member access
  • The tool can be reused for future encapsulation refactorings across the codebase
Ready
  • Ready to review
  • CI is passing and the mechanical migration is verified reproducible
2 -2
Disputed
  • Concept objection: massive churn in consensus code with no immediate benefit (ajtowns)
  • Approach objection: premature churn across call sites that should be split up (l0rinc)
  • Supports decoupling caller code from transaction internal layout (josibake, ryanofsky)
  • Verified the automated migration is reproducible and tests pass (alexanderwiederin)
407 + 203 tests
  • 407 lines added or modified outside tests
  • 203 lines added or modified in tests
  • 514 lines removed in total
  • 93 files, 7 commits
(+)#35054 fjahr p2p: UTXO set sharing
  • Allow nodes to fetch assumeutxo snapshots directly across the P2P network instead of via out-of-band sources
  • Enable fast, frictionless node bootstrapping for regular users and prepackaged node projects
P4 · cleanup
  • P4 because it adds an internal maintenance script to compute snapshot Merkle roots
  • Utility script restricted to generating roots for chainparams
Needs rebase, CI failing
  • Review is blocked: PR is a draft, has merge conflicts, failing CI, and author has been silent for 115 days
0 -6Disputed
  • Heavily disputed, with strong opposition against expanding assumeutxo into the P2P network
  • Concept approval because it provides in-band snapshot acquisition (andrewtoth, svanstaa)
  • Concept rejection: adds validation complexity and dual chainstate maintenance burden (stickies-v, l0rinc)
  • Concept rejection: introduces undesirable trust assumptions to the P2P protocol (evoskuil, eynhaender)
  • Concept rejection: uncertain demand and excessive long-term maintenance costs (narula, nkaretnikov)
943 + 771 tests
  • 943 lines added or modified outside tests
  • 771 lines added or modified in tests
  • 1 lines removed in total
  • 27 files, 13 commits
(+)#35733 achow101 sign: Remove FillableSigningProvider
  • Remove outdated signing abstractions left over from the legacy wallet
  • Confine legacy signing logic strictly to migration code paths and clean up tool signing interfaces
P4 · cleanup
  • P3 because it modernizes bitcoin-tx signing to use standard flat keystores
  • Ensures correct script size constraints are enforced when signing transactions
Ready
  • Ready for review; clean PR with feedback incorporated and passing CI
0
Strong
  • Broad support for isolating legacy wallet codepaths and modernizing signing providers
  • Concept approval because it containerizes legacy wallet code paths (rkrux)
  • Approach approval after verifying tests and script size limits (jeanpablojp)
  • Verified by testing bitcoin-tx commands (vicjuma)
86 + 104 tests
  • 86 lines added or modified outside tests
  • 104 lines added or modified in tests
  • 288 lines removed in total
  • 22 files, 7 commits
(+)#35994 purpleKarrot Primitives: Combine assignments
  • Help developers replace procedural member mutation with declarative constructors across tests and tools
  • Paves the way toward making core transaction primitives immutable
P4 · cleanup
  • P4 because the developer tool requires intrusive header annotations
  • Author views the linter check as better suited for local use rather than being committed to the repo
Needs rebase
  • Needs rebase, CI is failing, and author expressed preference to abandon rather than merge
0Mild
  • General support for declarative setup in principle, but implementation has bugs and unwanted annotations
  • Concept approval without stated reasons, noting unclear naming (l0rinc)
  • Concerned intrusive macro annotations pollute core headers (maflcko)
  • Automated rewrite erroneously dropped witness data in test helpers (alexanderwiederin)
  • Author leans toward manual rewrites instead of merging this PR (purpleKarrot)
22 + 372 tests
  • 22 lines added or modified outside tests
  • 372 lines added or modified in tests
  • 366 lines removed in total
  • 42 files, 8 commits
Reviewability: ReadyStalePaused
Agreement: StrongPositivePositive w/ caveatsNeutralMildDisputedBlockedCrickets
Reviews: current code-review ACKs, then (+stale ACKs) and -NACKs; greener = more ACKs.
Size: lines added or modified outside tests, then in tests; greener = smaller.
Ranking pass (2026-09-17): all PRs here were compared with each other; 13 notes on review order, overlaps, and band changes.

Covers

Command-line tools other than the node and its RPC client, and the scripts under contrib: bitcoin-tx, bitcoin-util, the offline bitcoin-wallet tool, the bitcoin wrapper, seed and asmap generation, signet tooling, tracing scripts, and developer helper scripts. Build and release scripts are build; test helpers are tests. The Scripts and tools label is a strong prior.

What matters here

Tools that operators and downstream projects depend on first: seed generation, asmap, signet, and the wallet tool affect real deployments. Then correctness of any tool that touches keys or transactions. Then developer productivity tools that many contributors use. Then niche or single-user scripts, which rank low regardless of size.

generated 2026-09-17 21:55 UTC