Skip to content

fix(create-cloudflare): commit spinner blocks GPG passphrase prompt on initial git commit#14767

Open
jasoncabot wants to merge 3 commits into
cloudflare:mainfrom
jasoncabot:jasoncabot/fix-gpg-sign-on-initial-commit
Open

fix(create-cloudflare): commit spinner blocks GPG passphrase prompt on initial git commit#14767
jasoncabot wants to merge 3 commits into
cloudflare:mainfrom
jasoncabot:jasoncabot/fix-gpg-sign-on-initial-commit

Conversation

@jasoncabot

@jasoncabot jasoncabot commented Jul 20, 2026

Copy link
Copy Markdown

This has annoyed me for a while but I haven't ever bothered to report / fix it up as I felt it was such a trivial thing.

When running npm create cloudflare@latest with commit.gpgsign enabled, the initial commit step would shell out to git commit while keeping its own animated spinner running (and piping stdio, which spun up a second nested spinner).

Since I require a passphrase to unlock my GPG key the creation step would always fail at the signing stage and have be quit using ctrl+c before it asked it I wanted to deploy my newly created application.

I tracked this down to the fact that the GPG passphrase prompt (e.g. pinentry-curses) draws directly to the terminal and fights the spinners for the screen, so you can't actually type your passphrase, the process just looks stuck until you Ctrl+C.

Fixed by stopping the spinner and running git commit with inherited stdio, so the prompt behaves exactly like a normal, manually-run git commit.


  • Tests
    • Tests included/updated
    • Automated tests not possible - manual testing has been completed as follows: running node ./packages/create-cloudflare/bin/c3.js gpg-test locally and observing it worked with cached / uncached credentials for my signing key when commit.gpgsign=true with a passphrase protected key
    • Additional testing not necessary because:
  • Public documentation
    • Cloudflare docs PR(s):
    • Documentation not necessary because: small bugfix

A picture of a cute animal (not mandatory, but encouraged)


Open in Devin Review

…n initial git commit

When running `npm create cloudflare@latest` with `commit.gpgsign` enabled, the
initial commit step would shell out to `git commit` while keeping its own
animated spinner running (and piping stdio, which spun up a second nested
spinner). Any GPG passphrase prompt (e.g. pinentry-curses) draws directly to
the terminal and fights those spinners for the screen, so you can't actually
type your passphrase - the process just looks stuck until you Ctrl+C.

Fixed by stopping the spinner and running `git commit` with inherited stdio,
so the prompt behaves exactly like a normal, manually-run `git commit`.
@changeset-bot

changeset-bot Bot commented Jul 20, 2026

Copy link
Copy Markdown

🦋 Changeset detected

Latest commit: b3e5257

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 1 package
Name Type
create-cloudflare Patch

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

@workers-devprod
workers-devprod requested review from a team and emily-shen and removed request for a team July 20, 2026 16:49
@workers-devprod

Copy link
Copy Markdown
Contributor

Codeowners approval required for this PR:

  • @cloudflare/wrangler
Show detailed file reviewers
  • .changeset/c3-fix-gpg-signed-commit-hang.md: [@cloudflare/wrangler]
  • packages/create-cloudflare/src/tests/git.test.ts: [@cloudflare/wrangler]
  • packages/create-cloudflare/src/git.ts: [@cloudflare/wrangler]

devin-ai-integration[bot]

This comment was marked as resolved.

@devin-ai-integration devin-ai-integration Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Devin Review found 1 new potential issue.

Open in Devin Review

Comment thread .changeset/c3-fix-gpg-signed-commit-hang.md Outdated
@pkg-pr-new

pkg-pr-new Bot commented Jul 22, 2026

Copy link
Copy Markdown
@cloudflare/autoconfig

npm i https://pkg.pr.new/@cloudflare/autoconfig@14767

@cloudflare/config

npm i https://pkg.pr.new/@cloudflare/config@14767

create-cloudflare

npm i https://pkg.pr.new/create-cloudflare@14767

@cloudflare/deploy-helpers

npm i https://pkg.pr.new/@cloudflare/deploy-helpers@14767

@cloudflare/kv-asset-handler

npm i https://pkg.pr.new/@cloudflare/kv-asset-handler@14767

miniflare

npm i https://pkg.pr.new/miniflare@14767

@cloudflare/pages-shared

npm i https://pkg.pr.new/@cloudflare/pages-shared@14767

@cloudflare/unenv-preset

npm i https://pkg.pr.new/@cloudflare/unenv-preset@14767

@cloudflare/vite-plugin

npm i https://pkg.pr.new/@cloudflare/vite-plugin@14767

@cloudflare/vitest-pool-workers

npm i https://pkg.pr.new/@cloudflare/vitest-pool-workers@14767

@cloudflare/workers-auth

npm i https://pkg.pr.new/@cloudflare/workers-auth@14767

@cloudflare/workers-editor-shared

npm i https://pkg.pr.new/@cloudflare/workers-editor-shared@14767

@cloudflare/workers-utils

npm i https://pkg.pr.new/@cloudflare/workers-utils@14767

wrangler

npm i https://pkg.pr.new/wrangler@14767

commit: b3e5257

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: Untriaged

Development

Successfully merging this pull request may close these issues.

2 participants