Ambiguous Exit Codes on Timeout

automationActiveStable

The command exits with code 0 on timeout, making it hard to distinguish between a successful condition and a timeout failure in scripts.

Opportunity Score (Heuristic (unvalidated)):72 · High · heuristic
First seen: 8/27/2026
Last seen: 8/30/2026

Score Breakdown

Heuristic ranking from public discussion signals — not a validated prediction of commercial opportunity, demand, or willingness to pay.

Composite 72/100 (High, unvalidated). Top driver: Willingness to pay (30% weight, 22.5 pts).

Frequency · 25% · 16.5 pts · XPS relevance66

Heuristic only — often urgency map or random scaffolding on ingest, not measured mention frequency. Maps to XPS relevance (with market size).

Severity · 25% · 20 pts · XPS quality80

LLM/mock judgment of intensity from title/summary text — not ops or ticket data. Maps to XPS quality (with willingness to pay).

Willingness to pay · 30% · 22.5 pts · XPS quality75

LLM/mock purchase-intent guess from text — not invoices, surveys, or paid seats. Maps to XPS quality.

Trend · 10% · 5.8 pts · XPS novelty58

Heuristic/scaffold (often random or fixed on insert) — not a verified mention trajectory. Maps to XPS novelty.

Market size · 10% · 7 pts · XPS relevance70

Heuristic/scaffold (often random or fixed) — not TAM research. Maps to XPS relevance (with frequency).

Catalog notes (not predictive analysis)

Ambiguous Exit Codes on Timeout (automation). Catalog heuristic opportunity score: 72/100 — a chosen formula over discussion-signal facets, not evidence of demand, conversion, or willingness to pay. Treat as browsing rank, not a commercial prediction.

The command exits with code 0 on timeout, making it hard to distinguish between a successful condition and a timeout failure in scripts.

Source Examples

azure/azure-cli Issues·Aug 27, 2026
“az resource wait --custom returns exit code 0 when condition times out ### Describe the bug `az resource wait --custom` honors `--timeout`, but when the custom condition remains false for the entire timeout, the command prints `{}` and exits with code `0`. A true condition also exits with code `0`, so scripts and CI systems cannot distinguish condition satisfaction from timeout. The current `dev` source still contains the apparent root cause in `src/azure-cli-core/azure/cli/core/commands/command_operation.py`: `WaitCommandOperation.wait` returns a `CLIError` object on timeout instead of raising it. ```python progress_indicator.end() return CLIError('Wait operation timed-out after {} seconds'.format(timeout)) ``` This appears to affect generic Azure CLI wait commands, not only this resource type. ### Related command ```bash az resource wait --ids "<RESOURCE_ID>" --custom "properties.connectivityStatus=='Connecting'" --interval 5 --timeout 30 ``` ### Errors No error is emitted. The timeout result is: ```text {} exit code: 0 elapsed time: 33 seconds ``` ### Issue script and debug output Given an existing ARM resource whose `properties.connectivityStatus` is `Connected`: ```bash az resource show \ --ids "<RESOURCE_ID>" \ --query "{connectivityStatus:properties.connectivityStatus,provisioningState:properties.provisioningState}" \ -o json ``` Result: ```json { "connectivityStatus": "Connected", "provisioningState": "Succeeded" } ``` Positive control - true condition: ```bash az resource wait \ --ids "<RESOURCE_ID>" \ --custom "properties.connectivityStatus=='Connected'" \ --interval 15 \ --timeout 900 echo $? ``` Observed: ```text exit code: 0 elapsed time: 1.6 seconds ``` Negative test - false condition: ```bash start_time=$(date +%s) az resource wait \ --ids "<RESOURCE_ID>" \ --custom "properties.connectivityStatus=='Connecting'" \ --interval 5 \ --timeout 30 wait_exit_code=$? elapsed_seconds=$(($(date +%s) - start_time)) printf 'wait_exit_code=%s\nelapsed_seconds=%s\n' \ "$wait_exit_code" \ "$elapsed_seconds" ``` Observed: ```text {} wait_exit_code=0 elapsed_seconds=33 ``` Impossible-condition test: ```bash start_time=$(date +%s) output=$(az resource wait \ --ids "<RESOURCE_ID>" \ --custom "properties.connectivityStatus=='DefinitelyNotAStatus'" \ --interval 2 \ --timeout 10 2>&1) wait_exit_code=$? elapsed_seconds=$(($(date +%s) - start_time)) printf 'output=%s\nwait_exit_code=%s\nelapsed_seconds=%s\n' \ "$output" \ "$wait_exit_code" \ "$elapsed_seconds" ``` Observed: ```text output={} wait_exit_code=0 elapsed_seconds=12 ``` The impossible value rules out a transient state transition. No resource identifiers or debug output are included because they are unnecessary for reproduction. ### Expected behavior When `--timeout` expires before `--custom` evaluates to true, the command should: 1. Exit with a nonzero code. 2. Emit `Wait operation timed-out after <seconds> seconds` or another clear timeout error. 3. Remain distinguishable from successful condition satisfaction in automation. ### Environment Summary ```text Azure CLI: 2.89.1 azure-cli-core: 2.89.1 azure-cli-telemetry: 1.1.0 OS: Linux 6.17.0-1022-azure, x86_64 Shell: GNU bash 5.2.21 Resource type: Microsoft.Kubernetes/connectedClusters ``` The same timeout code path remains present on current `dev` commit `b92a89e7781c11a5ee8437a84ef4b8fd9edab4f0` (August 27, 2026). ### Additional context Related but not duplicate: - #28523 reports another command returning exit code `0` on failure. - #32961 reports a custom JMESPath condition returning immediately, rather than timeout being returned as success. ”
— vadim-kovalyov↗

Competitive Landscape

  • Existing solutions are either too expensive or too limited
  • Most competitors target enterprise, leaving mid-market underserved
  • Community scripts and manual processes are the primary alternative

Recommended Next Steps

  1. ✓Validate pain intensity with 5-10 target customer interviews
  2. ✓Build minimal viable solution addressing the core workflow
  3. ✓Test pricing with early adopters from community forums

Related Pain Points

Target Customers

  • IT teams at mid-size organizations (100-2000 employees)
  • MSPs and consultants managing multiple client environments
  • Teams without dedicated specialist staff for this domain

Monetization Ideas

  1. 1SaaS subscription model ($99-$499/month depending on scale)
  2. 2Usage-based pricing aligned with value delivered
  3. 3Freemium tier to drive adoption and prove value