Skip to content

Ask Waza

Ask about Waza commands, writing evals, or troubleshooting an error. Paste YAML below for a schema check.

AI answers can be wrong. Do not share secrets or sensitive information. History may be retained.

CLI reference | Privacy & limits

    Check pasted YAML (optional)

    Azure Blob Storage

    Store evaluation results in Azure Blob Storage to enable team collaboration, centralized result browsing, and easy run comparison.

    Waza pins Azure Blob requests, including retries, to service version 2026-10-06. This follows the azblob v1.8.1 release guidance to avoid 400 InvalidHeaderValue errors while the SDK’s default 2026-12-06 version rolls out. No user configuration is required; the pin should only be removed after rollout completion is verified.

    Without centralized storage:

    • Results live on developers’ machines
    • Hard to compare runs across team members
    • No historical tracking
    • Results deleted when workspace cleaned up

    With Azure Storage:

    • Automatic uploads — Results upload immediately after waza run
    • Team visibility — Browse all runs with waza results list
    • Easy comparison — Compare any two runs with waza results compare
    • Historical archive — Results organized by date
    • No extra config — Uses your existing Azure credentials

    Existing explicitly configured result storage uploads the serialized evaluation result, including per-run evidence, requirement_explanations and snapshot_path metadata when present. It does not follow that path or upload separate snapshot files or their selected workspace contents. A downloaded result’s local snapshot path may therefore be unavailable on another machine.

    Capture itself adds no storage configuration or upload. Review result payloads before enabling storage: recorded outputs and other existing result fields are still included, and snapshot redaction is not a confidentiality guarantee for the entire result. See Snapshot & Replay for evidence availability, explicit local selection and capture limits.

    You need an Azure Storage account. You can:

    Option 1: Create a new storage account (recommended for team evaluation results)

    Terminal window
    # Create resource group
    az group create -n waza-eval -l eastus
    # Create storage account
    az storage account create \
    -n myteamwaza \ # Must be unique globally, lowercase alphanumeric
    -g waza-eval \
    --sku Standard_LRS
    # Create container
    az storage container create -n waza-results -a myteamwaza

    Option 2: Use existing storage account

    Terminal window
    # List your storage accounts
    az storage account list --query "[].name"
    # Use the account name in your .waza.yaml

    Waza uses DefaultAzureCredential to automatically detect your Azure identity. It tries credentials in this order:

    1. Environment variables (AZURE_CLIENT_ID, AZURE_CLIENT_SECRET, AZURE_TENANT_ID)
    2. Managed Identity (when running on Azure VMs, App Service, etc.)
    3. Azure CLI (az login)
    4. Visual Studio Code (if you’ve signed in)
    5. Azure PowerShell (if you’ve signed in)

    In 99% of cases, just run:

    Terminal window
    az login

    If you don’t have az CLI installed:

    • macOS: brew install azure-cli
    • Linux: curl -sL https://aka.ms/InstallAzureCLIDeb | sudo bash
    • Windows: Download from Azure CLI releases

    Add a storage: section to your .waza.yaml file in your project root:

    storage:
    provider: azure-blob
    accountName: "myteamwaza" # Replace with your storage account name
    containerName: "waza-results" # Optional (default: waza-results)
    enabled: true # Optional (default: true when configured)

    Configuration fields:

    Field Required Description
    provider Yes Must be azure-blob
    accountName Yes Your Azure Storage account name (e.g., myteamwaza)
    containerName No Blob container name. Default: waza-results
    enabled No Toggle uploads on/off. Default: true when storage is configured
    Terminal window
    az login

    You’ll be guided to a browser to sign in with your Azure account.

    Verify you’re logged in:

    Terminal window
    az account show

    Step 2: Create a Storage Account (if needed)

    Section titled “Step 2: Create a Storage Account (if needed)”

    If you don’t have a storage account yet:

    Terminal window
    # Create resource group
    az group create -n waza-eval -l eastus
    # Create storage account (account name must be globally unique, 3-24 chars, lowercase)
    az storage account create \
    -n myteamwaza \
    -g waza-eval \
    --sku Standard_LRS
    # Create container
    az storage container create -n waza-results -a myteamwaza

    Note the storage account name — you’ll use it in .waza.yaml.

    Terminal window
    cat > .waza.yaml <<EOF
    storage:
    provider: azure-blob
    accountName: "myteamwaza"
    containerName: "waza-results"
    enabled: true
    EOF

    Replace myteamwaza with your actual storage account name.

    Terminal window
    waza run evals/my-skill/eval.yaml -v

    During the run, you’ll see:

    📤 Uploading results to Azure Blob Storage...
    ✅ Results uploaded: waza-results/code-explainer/20250226-143025-abc123.json

    Browse all uploaded evaluation results:

    Terminal window
    waza results list

    Output:

    ID Skill Model Status Timestamp
    20250226-143025-abc123 code-explainer claude-sonnet-4.6 passed 2025-02-26 14:30:25
    20250226-135410-def456 code-explainer gpt-4o passed 2025-02-26 13:54:10
    20250226-124800-ghi789 math-solver claude-sonnet-4.6 failed 2025-02-26 12:48:00

    Show more results:

    Terminal window
    waza results list --limit 50

    Export as JSON:

    Terminal window
    waza results list --format json | jq .

    Compare results side-by-side to see what changed:

    Terminal window
    waza results compare 20250226-143025-abc123 20250226-135410-def456

    Output shows:

    • Task-level score changes
    • Pass/fail differences
    • Key metrics (tokens used, time taken, etc.)

    Example:

    Task Comparison
    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
    Task Score Δ Status
    basic-explanation -5 (-2%) ↓ regressed
    edge-case-handling +10 (+5%) ↑ improved
    performance-check 0 (0%) ↔ unchanged
    Aggregate Metrics
    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
    Pass rate: 85% → 90% (+5%)
    Avg completion time: 1.2s → 0.9s (-25%)
    Tokens used: 2,450 → 2,380 (-3%)

    View comparison as JSON:

    Terminal window
    waza results compare run-id-1 run-id-2 --format json

    Here’s a complete example using Azure Storage for team evaluation:

    Terminal window
    # 1. Set up Azure (one-time)
    az login
    az group create -n waza-eval -l eastus
    az storage account create -n myteamwaza -g waza-eval --sku Standard_LRS
    az storage container create -n waza-results -a myteamwaza
    # 2. Configure project (one-time)
    cat > .waza.yaml <<EOF
    storage:
    provider: azure-blob
    accountName: "myteamwaza"
    containerName: "waza-results"
    enabled: true
    EOF
    # 3. Run evaluations (repeatable)
    waza run evals/code-explainer/eval.yaml -v -o results-$(date +%s).json
    # 4. Browse team's results
    waza results list --limit 20
    # 5. Compare your run with previous run
    waza results compare 20250226-143025-abc123 20250226-135410-def456

    Cause: az login didn’t work or you don’t have Azure access.

    Fix:

    Terminal window
    # Clear cached credentials
    az logout
    # Re-authenticate
    az login
    # Verify access
    az account show

    ❌ Error: “Storage account not found”

    Section titled “❌ Error: “Storage account not found””

    Cause: Account name in .waza.yaml doesn’t exist or has a typo.

    Fix:

    Terminal window
    # List your storage accounts
    az storage account list --query "[].name"
    # Update .waza.yaml with the correct name

    Cause: The blob container doesn’t exist in the storage account.

    Fix:

    Terminal window
    # Create the container (replace account name)
    az storage container create -n waza-results -a myteamwaza

    Cause: Your Azure user doesn’t have storage permissions.

    Fix: Contact your Azure admin to grant you the Storage Blob Data Contributor role on the storage account.

    Fix: Verify storage is enabled and configured:

    Terminal window
    cat .waza.yaml | grep -A 5 "^storage:"

    Upload is automatic only if:

    • storage: section exists
    • enabled: true (or omitted, since it defaults to true)
    • You’ve run az login

    Results are stored in your Azure Storage account:

    Terminal window
    # View results in storage
    az storage blob list -c waza-results -a myteamwaza
    # Download a specific result
    az storage blob download \
    -c waza-results \
    -n code-explainer/20250226-143025-abc123.json \
    -a myteamwaza \
    -f result.json
    Terminal window
    # Create a temporary config with storage disabled
    cat > .waza-local.yaml <<EOF
    storage:
    enabled: false
    EOF
    # Run with local-only results (doesn't upload)
    waza run eval.yaml -v

    For CI/CD or service accounts, set environment variables:

    Terminal window
    export AZURE_CLIENT_ID="your-app-id"
    export AZURE_CLIENT_SECRET="your-secret"
    export AZURE_TENANT_ID="your-tenant-id"
    waza run eval.yaml # Uses these credentials