Auto-enable no-prompt mode in CI environments - #9125
Conversation
There was a problem hiding this comment.
Pull request overview
Auto-enables no-prompt mode in detected CI environments and improves EOF handling for non-terminal prompts.
Changes:
- Adds CI detection and environment/flag precedence tests.
- Makes confirmation EOF failures explicit and adds MultiSelect fallback behavior.
- Updates documentation, test harness behavior, changelog, and generated help snapshots.
Reviewed changes
Copilot reviewed 113 out of 113 changed files in this pull request and generated 3 comments.
Show a summary per file
| File | Description |
|---|---|
cli/azd/CHANGELOG.md |
Records the CI no-prompt fix. |
cli/azd/cmd/auto_install.go |
Enables no-prompt mode in CI. |
cli/azd/cmd/auto_install_integration_test.go |
Clears ambient CI variables in tests. |
cli/azd/cmd/auto_install_test.go |
Tests CI detection and overrides. |
cli/azd/docs/environment-variables.md |
Documents AZD_NON_INTERACTIVE. |
cli/azd/internal/reserved_flags.go |
Updates reserved flag help. |
cli/azd/pkg/input/asker.go |
Changes EOF prompt handling. |
cli/azd/pkg/input/asker_test.go |
Tests confirmation EOF behavior. |
cli/azd/test/azdcli/cli.go |
Preserves interactive functional tests. |
cli/azd/cmd/testdata/TestFigSpec.ts |
Updates generated completion help. |
cli/azd/cmd/testdata/TestUsage-azd.snap |
Updates usage snapshot. |
cli/azd/cmd/testdata/TestUsage-azd-add.snap |
Updates usage snapshot. |
cli/azd/cmd/testdata/TestUsage-azd-ai.snap |
Updates usage snapshot. |
cli/azd/cmd/testdata/TestUsage-azd-ai-agent.snap |
Updates usage snapshot. |
cli/azd/cmd/testdata/TestUsage-azd-ai-connection.snap |
Updates usage snapshot. |
cli/azd/cmd/testdata/TestUsage-azd-ai-finetuning.snap |
Updates usage snapshot. |
cli/azd/cmd/testdata/TestUsage-azd-ai-inspector.snap |
Updates usage snapshot. |
cli/azd/cmd/testdata/TestUsage-azd-ai-models.snap |
Updates usage snapshot. |
cli/azd/cmd/testdata/TestUsage-azd-ai-project.snap |
Updates usage snapshot. |
cli/azd/cmd/testdata/TestUsage-azd-ai-routine.snap |
Updates usage snapshot. |
cli/azd/cmd/testdata/TestUsage-azd-ai-skill.snap |
Updates usage snapshot. |
cli/azd/cmd/testdata/TestUsage-azd-ai-toolbox.snap |
Updates usage snapshot. |
cli/azd/cmd/testdata/TestUsage-azd-appservice.snap |
Updates usage snapshot. |
cli/azd/cmd/testdata/TestUsage-azd-auth.snap |
Updates usage snapshot. |
cli/azd/cmd/testdata/TestUsage-azd-auth-login.snap |
Updates usage snapshot. |
cli/azd/cmd/testdata/TestUsage-azd-auth-logout.snap |
Updates usage snapshot. |
cli/azd/cmd/testdata/TestUsage-azd-auth-status.snap |
Updates usage snapshot. |
cli/azd/cmd/testdata/TestUsage-azd-coding-agent.snap |
Updates usage snapshot. |
cli/azd/cmd/testdata/TestUsage-azd-completion.snap |
Updates usage snapshot. |
cli/azd/cmd/testdata/TestUsage-azd-completion-bash.snap |
Updates usage snapshot. |
cli/azd/cmd/testdata/TestUsage-azd-completion-fig.snap |
Updates usage snapshot. |
cli/azd/cmd/testdata/TestUsage-azd-completion-fish.snap |
Updates usage snapshot. |
cli/azd/cmd/testdata/TestUsage-azd-completion-powershell.snap |
Updates usage snapshot. |
cli/azd/cmd/testdata/TestUsage-azd-completion-zsh.snap |
Updates usage snapshot. |
cli/azd/cmd/testdata/TestUsage-azd-concurx.snap |
Updates usage snapshot. |
cli/azd/cmd/testdata/TestUsage-azd-config.snap |
Updates usage snapshot. |
cli/azd/cmd/testdata/TestUsage-azd-config-get.snap |
Updates usage snapshot. |
cli/azd/cmd/testdata/TestUsage-azd-config-list-alpha.snap |
Updates usage snapshot. |
cli/azd/cmd/testdata/TestUsage-azd-config-options.snap |
Updates usage snapshot. |
cli/azd/cmd/testdata/TestUsage-azd-config-reset.snap |
Updates usage snapshot. |
cli/azd/cmd/testdata/TestUsage-azd-config-set.snap |
Updates usage snapshot. |
cli/azd/cmd/testdata/TestUsage-azd-config-show.snap |
Updates usage snapshot. |
cli/azd/cmd/testdata/TestUsage-azd-config-sub-filter.snap |
Updates usage snapshot. |
cli/azd/cmd/testdata/TestUsage-azd-config-sub-filter-remove.snap |
Updates usage snapshot. |
cli/azd/cmd/testdata/TestUsage-azd-config-sub-filter-set.snap |
Updates usage snapshot. |
cli/azd/cmd/testdata/TestUsage-azd-config-unset.snap |
Updates usage snapshot. |
cli/azd/cmd/testdata/TestUsage-azd-copilot.snap |
Updates usage snapshot. |
cli/azd/cmd/testdata/TestUsage-azd-copilot-consent.snap |
Updates usage snapshot. |
cli/azd/cmd/testdata/TestUsage-azd-copilot-consent-grant.snap |
Updates usage snapshot. |
cli/azd/cmd/testdata/TestUsage-azd-copilot-consent-list.snap |
Updates usage snapshot. |
cli/azd/cmd/testdata/TestUsage-azd-copilot-consent-revoke.snap |
Updates usage snapshot. |
cli/azd/cmd/testdata/TestUsage-azd-demo.snap |
Updates usage snapshot. |
cli/azd/cmd/testdata/TestUsage-azd-deploy.snap |
Updates usage snapshot. |
cli/azd/cmd/testdata/TestUsage-azd-down.snap |
Updates usage snapshot. |
cli/azd/cmd/testdata/TestUsage-azd-env.snap |
Updates usage snapshot. |
cli/azd/cmd/testdata/TestUsage-azd-env-config.snap |
Updates usage snapshot. |
cli/azd/cmd/testdata/TestUsage-azd-env-config-get.snap |
Updates usage snapshot. |
cli/azd/cmd/testdata/TestUsage-azd-env-config-set.snap |
Updates usage snapshot. |
cli/azd/cmd/testdata/TestUsage-azd-env-config-unset.snap |
Updates usage snapshot. |
cli/azd/cmd/testdata/TestUsage-azd-env-get-value.snap |
Updates usage snapshot. |
cli/azd/cmd/testdata/TestUsage-azd-env-get-values.snap |
Updates usage snapshot. |
cli/azd/cmd/testdata/TestUsage-azd-env-list.snap |
Updates usage snapshot. |
cli/azd/cmd/testdata/TestUsage-azd-env-new.snap |
Updates usage snapshot. |
cli/azd/cmd/testdata/TestUsage-azd-env-refresh.snap |
Updates usage snapshot. |
cli/azd/cmd/testdata/TestUsage-azd-env-remove.snap |
Updates usage snapshot. |
cli/azd/cmd/testdata/TestUsage-azd-env-select.snap |
Updates usage snapshot. |
cli/azd/cmd/testdata/TestUsage-azd-env-set.snap |
Updates usage snapshot. |
cli/azd/cmd/testdata/TestUsage-azd-env-set-secret.snap |
Updates usage snapshot. |
cli/azd/cmd/testdata/TestUsage-azd-exec.snap |
Updates usage snapshot. |
cli/azd/cmd/testdata/TestUsage-azd-extension.snap |
Updates usage snapshot. |
cli/azd/cmd/testdata/TestUsage-azd-extension-install.snap |
Updates usage snapshot. |
cli/azd/cmd/testdata/TestUsage-azd-extension-list.snap |
Updates usage snapshot. |
cli/azd/cmd/testdata/TestUsage-azd-extension-show.snap |
Updates usage snapshot. |
cli/azd/cmd/testdata/TestUsage-azd-extension-source.snap |
Updates usage snapshot. |
cli/azd/cmd/testdata/TestUsage-azd-extension-source-add.snap |
Updates usage snapshot. |
cli/azd/cmd/testdata/TestUsage-azd-extension-source-list.snap |
Updates usage snapshot. |
cli/azd/cmd/testdata/TestUsage-azd-extension-source-remove.snap |
Updates usage snapshot. |
cli/azd/cmd/testdata/TestUsage-azd-extension-source-validate.snap |
Updates usage snapshot. |
cli/azd/cmd/testdata/TestUsage-azd-extension-uninstall.snap |
Updates usage snapshot. |
cli/azd/cmd/testdata/TestUsage-azd-extension-upgrade.snap |
Updates usage snapshot. |
cli/azd/cmd/testdata/TestUsage-azd-hooks.snap |
Updates usage snapshot. |
cli/azd/cmd/testdata/TestUsage-azd-hooks-run.snap |
Updates usage snapshot. |
cli/azd/cmd/testdata/TestUsage-azd-infra.snap |
Updates usage snapshot. |
cli/azd/cmd/testdata/TestUsage-azd-infra-generate.snap |
Updates usage snapshot. |
cli/azd/cmd/testdata/TestUsage-azd-init.snap |
Updates usage snapshot. |
cli/azd/cmd/testdata/TestUsage-azd-mcp.snap |
Updates usage snapshot. |
cli/azd/cmd/testdata/TestUsage-azd-mcp-start.snap |
Updates usage snapshot. |
cli/azd/cmd/testdata/TestUsage-azd-monitor.snap |
Updates usage snapshot. |
cli/azd/cmd/testdata/TestUsage-azd-package.snap |
Updates usage snapshot. |
cli/azd/cmd/testdata/TestUsage-azd-pipeline.snap |
Updates usage snapshot. |
cli/azd/cmd/testdata/TestUsage-azd-pipeline-config.snap |
Updates usage snapshot. |
cli/azd/cmd/testdata/TestUsage-azd-provision.snap |
Updates usage snapshot. |
cli/azd/cmd/testdata/TestUsage-azd-publish.snap |
Updates usage snapshot. |
cli/azd/cmd/testdata/TestUsage-azd-restore.snap |
Updates usage snapshot. |
cli/azd/cmd/testdata/TestUsage-azd-show.snap |
Updates usage snapshot. |
cli/azd/cmd/testdata/TestUsage-azd-template.snap |
Updates usage snapshot. |
cli/azd/cmd/testdata/TestUsage-azd-template-list.snap |
Updates usage snapshot. |
cli/azd/cmd/testdata/TestUsage-azd-template-show.snap |
Updates usage snapshot. |
cli/azd/cmd/testdata/TestUsage-azd-template-source.snap |
Updates usage snapshot. |
cli/azd/cmd/testdata/TestUsage-azd-template-source-add.snap |
Updates usage snapshot. |
cli/azd/cmd/testdata/TestUsage-azd-template-source-list.snap |
Updates usage snapshot. |
cli/azd/cmd/testdata/TestUsage-azd-template-source-remove.snap |
Updates usage snapshot. |
cli/azd/cmd/testdata/TestUsage-azd-tool.snap |
Updates usage snapshot. |
cli/azd/cmd/testdata/TestUsage-azd-tool-check.snap |
Updates usage snapshot. |
cli/azd/cmd/testdata/TestUsage-azd-tool-install.snap |
Updates usage snapshot. |
cli/azd/cmd/testdata/TestUsage-azd-tool-list.snap |
Updates usage snapshot. |
cli/azd/cmd/testdata/TestUsage-azd-tool-show.snap |
Updates usage snapshot. |
cli/azd/cmd/testdata/TestUsage-azd-tool-uninstall.snap |
Updates usage snapshot. |
cli/azd/cmd/testdata/TestUsage-azd-tool-upgrade.snap |
Updates usage snapshot. |
cli/azd/cmd/testdata/TestUsage-azd-up.snap |
Updates usage snapshot. |
cli/azd/cmd/testdata/TestUsage-azd-update.snap |
Updates usage snapshot. |
cli/azd/cmd/testdata/TestUsage-azd-version.snap |
Updates usage snapshot. |
cli/azd/cmd/testdata/TestUsage-azd-x.snap |
Updates usage snapshot. |
3e9d44e to
e62527b
Compare
jongio
left a comment
There was a problem hiding this comment.
Incremental look at the new commit. The terminology cleanups read well and the reworded docs/comments match the intent. One doc-vs-behavior mismatch on the reworded AZD_NON_INTERACTIVE line, noted inline.
richardpark-msft
left a comment
There was a problem hiding this comment.
Looks like @jongio and CCR are still replying to you, but I'm good on my end.
jongio
left a comment
There was a problem hiding this comment.
The follow-up commit is doc and comment only. I verified the AZD_NON_INTERACTIVE parsing matches the updated docs: non-boolean values are logged as a warning and ignored via strconv.ParseBool, and valid true/false/1/0 values behave as described. Re-approving against the latest commit.
…plies Previously envVarPresent was set as soon as AZD_NON_INTERACTIVE existed, before strconv.ParseBool. An unparseable value (e.g. a typo like 'yes') was logged as 'ignored' but still suppressed CI/agent auto-detection, leaving NoPrompt=false — so a typo in CI silently kept azd interactive, the exact failure this feature prevents. Only treat a successfully parsed boolean as an explicit choice: move envVarPresent=true inside the err==nil branch. Invalid values are now genuinely ignored (no NoPrompt change, no auto-detection suppression), so CI still resolves to deterministic no-prompt. The AZD_NON_INTERACTIVE=false opt-out (valid bool) is unchanged. Adds a CI-plus-invalid-value regression case. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: cb137813-06e2-447c-ad1d-17f998bdc752
d0f323b to
990f82d
Compare
jongio
left a comment
There was a problem hiding this comment.
Re-reviewed the incremental changes since my last approval. The AZD_NON_INTERACTIVE parsing fix is correct: moving envVarPresent = true inside the err == nil branch means an invalid value (e.g. a typo like yes) no longer suppresses CI/agent auto-detection, so CI still resolves to deterministic no-prompt instead of silently staying interactive. The downstream !envVarPresent && (IsRunningInAgent() || IsRunningOnCI()) gate confirms the behavior, and the new CI with invalid AZD_NON_INTERACTIVE test case covers the regression. Docs and doc comments now match the code.
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 115 out of 115 changed files in this pull request and generated no new comments.
Comments suppressed due to low confidence (1)
cli/azd/pkg/input/asker.go:270
- [azd-code-reviewer] A non-empty invalid answer is silently converted to the default when the pipe ends. For example,
Confirm{Default: true}with stdinno(orno\nfollowed by EOF) proceeds astrue, even though the user supplied an explicit but unsupported answer. Preserve the immediate blank/EOF default behavior, but track invalid input and return an actionable error if EOF arrives before a validy/n; add a regression case for a default-true prompt.
jongio
left a comment
There was a problem hiding this comment.
Re-reviewed the two commits since my last pass. The AZD_NON_INTERACTIVE fix is correct: only a successfully parsed bool sets envVarPresent, so an invalid value now leaves CI auto-detection intact instead of silently suppressing it, and the false opt-out still works. The added regression test covers the invalid-value-in-CI case. The doc and comment edits are accurate.
Azure Dev CLI Install InstructionsInstall scriptsMacOS/Linux
bash: pwsh: WindowsPowerShell install MSI install Standalone Binary
MSI
Documentationlearn.microsoft.com documentationtitle: Azure Developer CLI reference
|
There was a problem hiding this comment.
Re-reviewed the two new commits since my last approval. The AZD_NON_INTERACTIVE parsing fix is correct: only a successfully parsed boolean sets ^[nvVarPresent, so an invalid value (e.g. a typo) no longer suppresses CI/agent auto-detection and CI still resolves to deterministic no-prompt. The false opt-out and true opt-in paths are unchanged, and the added CI-plus-invalid-value test covers the regression. Doc and comment clarifications read accurately. Still good from my side.
jongio
left a comment
There was a problem hiding this comment.
Note: my previous approval comment had some formatting garbled. Clean version below.
Re-reviewed the two new commits since my last approval. The AZD_NON_INTERACTIVE parsing fix is correct: only a successfully parsed boolean sets envVarPresent, so an invalid value (e.g. a typo) no longer suppresses CI/agent auto-detection and CI still resolves to deterministic no-prompt. The false opt-out and true opt-in paths are unchanged, and the added CI-plus-invalid-value test covers the regression. Doc and comment clarifications read accurately. Still good from my side.
jongio
left a comment
There was a problem hiding this comment.
Re-reviewed the two follow-up commits. The invalid AZD_NON_INTERACTIVE handling now only suppresses CI/agent auto-detection on a successfully parsed boolean, so a typo in CI still resolves to deterministic no-prompt. Logic and the added regression test check out.
jongio
left a comment
There was a problem hiding this comment.
Re-reviewed the two new commits since my last approval.
The AZD_NON_INTERACTIVE fix is correct: moving �nvVarPresent = true inside the �rr == nil branch means an unparseable value no longer suppresses the !envVarPresent CI/agent auto-detection, so a typo still resolves to deterministic no-prompt. The =false opt-out (valid bool) still suppresses it, and the added CI with invalid AZD_NON_INTERACTIVE test case pins the behavior. Doc and comment clarifications match the runtime behavior.
jongio
left a comment
There was a problem hiding this comment.
Re-reviewed the two new commits since my last approval.
The AZD_NON_INTERACTIVE fix is correct: moving envVarPresent = true inside the err == nil branch means an unparseable value no longer suppresses the !envVarPresent CI/agent auto-detection, so a typo still resolves to deterministic no-prompt. The =false opt-out (valid bool) still suppresses it, and the added "CI with invalid AZD_NON_INTERACTIVE" test case pins the behavior. Doc and comment clarifications match the runtime behavior.
…tion tests The nightly `azure-dev - cli` pipeline has failed every night since 07-24. Regression from #9125 ("Auto-enable no-prompt mode in CI environments"). Root cause: the provision-validation-quota tests answer a fixed stdin script, but the interactive prompt sequence differs between playback and live: - In playback the recording harness sets AZD_DEBUG_SYNTHETIC_SUBSCRIPTION, so no subscription prompt fires (only the validation confirm). - In live nightly there is no synthetic subscription, so azd prompts to select the subscription first, shifting every stdin answer by one line. #9125 also changed Confirm to return its default (Yes) on EOF/blank instead of the old blank=No behavior, removing the blank-line padding the original stdin relied on. The combination broke the tests in live: - Sub tests: the lone "n" was eaten by the subscription Select prompt -> `'n' is not an allowed choice`. - RG tests: answers shifted; the validation confirm hit EOF -> default Yes -> azd deployed the intentionally-invalid template -> `template contains errors`. Fix: persist AZURE_SUBSCRIPTION_ID to the azd environment (via cfgOrStoredSubscription(session), mirroring deploy_test.go) so the subscription prompt never fires in either mode. The prompt sequence is now identical across playback and live, so the stdin scripts answer exactly the remaining prompts (RG select/name for RG scope, then the explicit "n" for the validation confirm). Cassettes must be re-recorded because the recorded flow prompted for (and enumerated) the subscription, whereas the fixed flow resolves it non-interactively: cd cli/azd && mage record -filter=Test_CLI_ProvisionValidationQuota Fixes #9312 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: e3af6cd6-bc77-45e7-a150-33390aa47bd2
…tion tests (#9313) The nightly `azure-dev - cli` pipeline has failed every night since 07-24. Regression from #9125 ("Auto-enable no-prompt mode in CI environments"). Root cause: the provision-validation-quota tests answer a fixed stdin script, but the interactive prompt sequence differs between playback and live: - In playback the recording harness sets AZD_DEBUG_SYNTHETIC_SUBSCRIPTION, so no subscription prompt fires (only the validation confirm). - In live nightly there is no synthetic subscription, so azd prompts to select the subscription first, shifting every stdin answer by one line. #9125 also changed Confirm to return its default (Yes) on EOF/blank instead of the old blank=No behavior, removing the blank-line padding the original stdin relied on. The combination broke the tests in live: - Sub tests: the lone "n" was eaten by the subscription Select prompt -> `'n' is not an allowed choice`. - RG tests: answers shifted; the validation confirm hit EOF -> default Yes -> azd deployed the intentionally-invalid template -> `template contains errors`. Fix: persist AZURE_SUBSCRIPTION_ID to the azd environment (via cfgOrStoredSubscription(session), mirroring deploy_test.go) so the subscription prompt never fires in either mode. The prompt sequence is now identical across playback and live, so the stdin scripts answer exactly the remaining prompts (RG select/name for RG scope, then the explicit "n" for the validation confirm). Cassettes must be re-recorded because the recorded flow prompted for (and enumerated) the subscription, whereas the fixed flow resolves it non-interactively: cd cli/azd && mage record -filter=Test_CLI_ProvisionValidationQuota Fixes #9312 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: e3af6cd6-bc77-45e7-a150-33390aa47bd2
Summary
Fixes Azure/azure-dev-pr#1796.
This PR fixes an inconsistency in how azd handles interactive prompts in non-interactive environments: when azd runs in CI without
--no-prompt, interactive confirmations were resolved against an EOF/blank stdin and could silently return the wrong value. Concretely, aConfirmwithDefaultValue: truerendered(y/N)and returnedfalse, aborting the operation instead of honoring its default.This PR formalizes azd's behavior into two well-defined modes:
resource.IsRunningOnCI()), mirroring the existing AI-agent auto-detection. This makes CI deterministic: prompts resolve to their defaults, and any required input that has no usable default fails fast with an actionablePromptRequiredError.Confirm/MultiSelectreaches a blank line (Enter) or EOF, azd returns the prompt's default — consistent with howInputandSelectalready fall back to their defaults — instead of silently returningfalse. This is the core bug fix: it removes the previous behavior where aDefaultValue: trueconfirm aborted on EOF.Explicit
--no-prompt/--non-interactiveflags and theAZD_NON_INTERACTIVEenv var continue to take precedence. SetAZD_NON_INTERACTIVE=falseto opt out of the automatic no-prompt enablement (the global no-prompt setting stays off). Some commands still avoid interactive prompts in CI/CD by design, independent of this variable.Changes
cmd/auto_install.go— extend NoPrompt auto-detection toresource.IsRunningOnCI()(in addition toagentdetect.IsRunningInAgent()); update--no-prompthelp text and document theAZD_NON_INTERACTIVE=falseopt-out.pkg/input/asker.go— non-terminalConfirmderives its indicator and blank-line/EOF result from the prompt'sDefault(soDefaultValue: truerenders(Y/n)and returnstrueon Enter/EOF);MultiSelectpasses each item's default so an exhausted stdin falls back to that item's default selection state.pkg/input/prompt_required_error.go— reword docs to reflect thatPromptRequiredErrorcovers auto-enabled no-prompt (CI/agent) cases where a prompt has no usable default; minormessage()cleanup.internal/reserved_flags.go,internal/global_command_options.go— document auto-enable +AZD_NON_INTERACTIVE=falseopt-out.docs/environment-variables.md— documentAZD_NON_INTERACTIVE.test/azdcli/cli.go— setAZD_NON_INTERACTIVE=falsefor stdin-driven functional tests (the suite itself runs in CI) so azd keeps reading piped answers, mirroring the existingAZD_DISABLE_AGENT_DETECT=1precedent.test/functional/preflight_quota_test.go— update the preflight stdin helpers to decline the deployment warning explicitly with"n"(the tests previously relied on the blank-line=false bug).--no-prompthelp text.Testing
TestParseGlobalFlags_CIDetection— CI vars enable no-prompt; explicit flags/AZD_NON_INTERACTIVE=falseoverride.Test_NewAsker_NonTerminal_Confirm_EOFReturnsDefault— piped EOF returns the confirm's default.Test_NewAsker_NonTerminal_Confirm_BlankHonorsDefaultWithZeroInit— blank line honorsDefaulteven when the caller passes a zero-initialized*bool.Test_NewAsker_NonTerminal_MultiSelect_EOFReturnsDefaults— mid-selection EOF falls back to per-item defaults.Test_CLI_PreflightQuota_*functional tests pass in playback with the updated stdin.go build ./...,go vet,gofmt,pkg/inputandcmdflag/usage suites all clean.Notes
AZD_NON_INTERACTIVE=falsevia the test harness so azd keeps reading piped answers.go.mod/go.sumchanges.CHANGELOG.mdentry — per repo convention, changelog entries are added during the release process to avoid merge conflicts.