nikivdev/code · error

remote review requires an active subscription. Visit myflow

Error message

remote review requires an active subscription. Visit myflow to subscribe.

What it means

The remote review service responded 402 Payment Required, which the library maps to this message. An account exists and authenticates, but the subscription tier does not permit remote reviews.

Source

Thrown at src/commit.rs:5488

        commit_with_check_timeout_secs(),
    ))
    .context("failed to create HTTP client for remote review")?;

    let mut request = client.post(&review_url).json(&payload);
    if let Some(token) = commit_with_check_review_token() {
        request = request.bearer_auth(token);
    }

    let response = request
        .send()
        .context("failed to send remote review request")?;

    if !response.status().is_success() {
        if response.status() == StatusCode::UNAUTHORIZED {
            bail!("remote review unauthorized. Run `f auth` to login.");
        }
        if response.status() == StatusCode::PAYMENT_REQUIRED {
            bail!("remote review requires an active subscription. Visit myflow to subscribe.");
        }
        bail!("remote review failed: HTTP {}", response.status());
    }

    let payload: RemoteReviewResponse = response
        .json()
        .context("failed to parse remote review response")?;

    if !payload.stderr.trim().is_empty() {
        debug!(stderr = payload.stderr.as_str(), "remote claude stderr");
    }

    let result = payload.output;
    let mut review_json = parse_review_json(&result);
    let future_tasks = review_json
        .as_ref()
        .map(|parsed| normalize_future_tasks(&parsed.future_tasks))
        .unwrap_or_default();

View on GitHub (pinned to a747e741ae)

Solutions

  1. Visit myflow and subscribe or renew the subscription.
  2. Verify billing details/payment method on the myflow account page.
  3. Check current plan and quota usage; upgrade if limits are hit.
  4. If already subscribed, re-login (`f auth`) to refresh entitlements and contact support if it persists.
Defensive patterns

Strategy: try-catch

Validate before calling

// preflight entitlement check if the service exposes one
let plan_ok = client.get(format!("{base}/subscription"))
    .bearer_auth(token).send().await?
    .json::<SubscriptionInfo>().await?
    .active;
if !plan_ok { anyhow::bail!("subscription inactive; visit myflow to subscribe"); }

Try / catch

match run_remote_review(&diff).await {
    Err(e) if e.to_string().contains("active subscription") => {
        eprintln!("Remote review needs a subscription. Open myflow billing page.");
        open::that("https://myflow/billing").ok();
        Err(e)
    }
    other => other,
}

Prevention

When it happens

Trigger: Receiving StatusCode::PAYMENT_REQUIRED from the review endpoint while dispatching a remote review.

Common situations: Free/trial plan expired; subscription lapsed (payment failed); usage quota exhausted; account downgraded after previously working.

Related errors


AI-assisted analysis of nikivdev/code@a747e741ae (2026-09-01). Data as JSON: /api/errors/d177fb784fac188c. Report an issue: GitHub.