It May Be a Good Idea to Verify CLI Binaries Used in GitHub Actions with Both SHA256 Checksums and Attestations

In masutaka/actions , which I introduced in [2026-02-23-1] , CLI binaries such as jactionlint are downloaded from each tool’s GitHub Releases. The downloaded binaries are verified with both a SHA256 checksum and gh attestation verify. In this post, I’ll explain how and why. Verifying with SHA256 Checksums and Attestations Here’s how masutaka/actions verifies jactionlint: 🔗 .github/workflows/gh_action_lint.yml - name: Install jactionlint env: GH_TOKEN: ${{ github.token }} REPO: jdx/jactionlint ASSET: "*_linux_amd64.tar.gz" TAG: v2.0.2 ASSET_SHA256: 026bce6d0ef196f5b22bf43acb1348d47c5d0a5ae61d6ec3bdba1229a823161b SIGNER_WORKFLOW: jdx/jactionlint/.github/workflows/release.yaml EXECUTABLE: jactionlint run: | gh release download "$TAG" \ --repo "$REPO" \ --pattern "$ASSET" \ --output asset.tar.gz # 正規の release workflow がそのタグからビルドした成果物であることを検証する gh attestation verify asset.tar.gz \ --repo "$REPO" \ --signer-workflow "$SIGNER_WORKFLOW" \ --source-ref "refs/tags/$TAG" # ピンした時点から中身が変わっていないことを検証する echo "${ASSET_SHA256} asset.tar.gz" | sha256sum -c - tar -xzf asset.tar.gz "$EXECUTABLE" It downloads the asset from GitHub Releases and uses it only if it passes both gh attestation verify and sha256sum -c. ...

2026-10-12 (Mon) · masutaka

Created a GitHub Actions Reusable Workflows Repository for Personal Use

I created a GitHub Actions Reusable Workflows repository for my personal use. What Are GitHub Actions Reusable Workflows? GitHub Actions’ reusable workflows is a mechanism that allows workflow files to be called from other repositories. For example, you can call a workflow from another repository like this: jobs: example: uses: masutaka/actions/.github/workflows/some-workflow.yml@main Since you can consolidate common processes in one place, it saves you the trouble of managing the same workflow across multiple repositories. ...

2026-02-23 (Mon) · masutaka

Created a Rails 8 Learning Repository and Started Recovering from a 6-Year Blank with Rails Guides and Claude Code

Last month I changed jobs and returned to Rails development after a long time. With a 6-year gap and only one month available for learning, I needed to efficiently grasp Rails 8’s new features and refresh my memory of existing ones. So I decided to learn by building a working app together with Claude Code while referencing the Rails Guides. I temporarily subscribed to Claude Code’s Max plan at USD 100/mo. ...

2025-12-30 (Tue) · masutaka

Self-implemented IFTTT Pro's RSS feed notification feature with AWS serverless architecture

For casual information gathering, I’ve been running a serverless application called masutaka-feed since 2020. Post GitHub private feeds1 to Mastodon Star and follow notifications are also sent to Pushover Post Hatena Bookmark favorites feeds2 to Mastodon These are pieces of information that aren’t worth subscribing to seriously with a feed reader, but I want to keep them in my field of view. ※ Mastodon posts are made to the private account @[email protected] Previous Architecture Diagram Previously, I used IFTTT’s RSS Feed Integration to detect new items and call Lambda functions via API Gateway. ...

2025-07-20 (Sun) · masutaka

Created an Emacs Lisp function to insert the title of a GitHub Issue/PR/Discussion URL

On GitHub, when you paste Issue/PR/Discussion URLs into comments or descriptions, GitHub automatically renders the status, title, and number. For example, if you write the following: * https://github.com/masutaka/sandbox/issues/93 * https://github.com/masutaka/sandbox/issues/70 * https://github.com/masutaka/sandbox/pull/90 * https://github.com/masutaka/sandbox/discussions/91 It renders like this: However, when writing in a plain text area or text editor, the URLs aren’t automatically expanded, so you can’t see the titles or statuses at a glance. This isn’t a problem with just a few URLs, but it can become confusing when dealing with many. ...

2025-04-15 (Tue) · masutaka