Skip to content
Back to skills

Navan Incident Runbook

BSecurity

Use when responding to Navan platform incidents — flight cancellations, booking API failures, expense sync outages, or OAuth authentication errors. Trigger with "navan incident runbook" or "navan outage response".

  • 4 stars
  • 0 votes
  • 0 copies
  • 3 views
  • Added September 12, 2026
securitygobashtestingdebuggingapisecurityperformancedocumentation

Works with

  • cli
  • api

Security analysis

B88/100
  • criticalSends environment variables or credentials to an external URL

Pro scans all 2 files and shows the line behind each finding

Scanned September 12, 2026

npx -y skills add aibot88/sec_skill_store --skill navan-incident-runbook --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Navan Incident Runbook?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Navan Incident Runbook
[![Security: B — Skills Directory](https://www.skillsdirectory.com/api/skills/aibot88-navan-incident-runbook/badge)](https://www.skillsdirectory.com/skills/aibot88-navan-incident-runbook)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: navan-incident-runbook
description: |
  Use when responding to Navan platform incidents — flight cancellations, booking API failures, expense sync outages, or OAuth authentication errors.
  Trigger with "navan incident runbook" or "navan outage response".
allowed-tools: Read, Write, Edit, Bash(curl:*), Bash(jq:*), Grep
version: 1.0.0
license: MIT
author: Jeremy Longshore <jeremy@intentsolutions.io>
tags: [saas, navan, travel]
compatible-with: claude-code
---

# Navan Incident Runbook

## Overview

Structured incident response for Navan travel platform disruptions. Navan uses raw REST APIs with OAuth 2.0 — there is no SDK and no sandbox. All diagnostic commands run against production.

## Prerequisites

- Access to Navan admin console (Admin > Travel admin)
- OAuth credentials (`client_id`, `client_secret`) stored in your secret manager
- Familiarity with Navan's Ava AI assistant (in-app chat, first-line support)
- `curl` and `jq` for API health probing

## Instructions

### Step 1 — Classify Severity

| Severity | Condition | Response Time | Escalation |
|----------|-----------|---------------|------------|
| **P1 — Critical** | API fully down, all bookings failing | Immediate | Navan support + Ava AI + internal exec |
| **P2 — High** | Degraded performance, partial failures | 15 minutes | Navan support + internal travel admin |
| **P3 — Medium** | Intermittent errors, expense sync delays | 1 hour | Internal triage, monitor |
| **P4 — Low** | Cosmetic issues, non-blocking warnings | Next business day | Internal backlog |

### Step 2 — Triage with Ava AI

Before manual debugging, use Navan's built-in AI assistant:

1. Open the Navan app or visit [app.navan.com](https://app.navan.com)
2. Click the Ava chat icon (bottom-right)
3. Describe the issue — Ava can check booking status, rebook flights, and surface known outages
4. If Ava cannot resolve, proceed to API health checks

### Step 3 — API Health Check

```bash
# Test OAuth authentication
AUTH_RESPONSE=$(curl -s -w "\n%{http_code}" \
  -X POST "https://api.navan.com/ta-auth/oauth/token" \
  -H "Content-Type: application/x-www-form-urlencoded" \
  -d "grant_type=client_credentials&client_id=$NAVAN_CLIENT_ID&client_secret=$NAVAN_CLIENT_SECRET")

HTTP_CODE=$(echo "$AUTH_RESPONSE" | tail -1)
BODY=$(echo "$AUTH_RESPONSE" | sed '$d')

echo "Auth endpoint: HTTP $HTTP_CODE"
echo "$BODY" | jq '{token_present: (.access_token != null), error: .error}' 2>/dev/null
```

```bash
# Test booking retrieval (requires valid token)
TOKEN=$(echo "$BODY" | jq -r '.access_token')
curl -s -w "\nHTTP %{http_code}" \
  -H "Authorization: Bearer $TOKEN" \
  "https://api.navan.com/v1/bookings?page=0&size=50" | tail -1
```

### Step 4 — Incident-Specific Playbooks

**Booking API Failure (P1/P2):**
1. Confirm via API health check above — look for HTTP 500/503
2. Check if the issue is flight-specific or hotel-specific by testing both trip types
3. Direct travelers to Navan mobile app or phone support as fallback
4. Queue failed booking requests for retry with exponential backoff

**OAuth Token Failure (P1):**
1. Test with `curl` against `/ta-auth/oauth/token` — expect HTTP 200 with `access_token` field
2. If HTTP 401: credentials may be rotated; check Admin > Integrations
3. If HTTP 403: API access may be revoked; contact Navan admin
4. Re-request a token via `POST /ta-auth/oauth/token` with `grant_type=client_credentials`

**Expense Sync Failure (P2/P3):**
1. Check the Expense Transaction API status — this endpoint requires separate enablement
2. Verify your Fivetran/Airbyte connector status if using a data pipeline
3. Check TRANSACTION table freshness — incremental sync may be lagging
4. Validate that expense categories map correctly to your ERP

**Flight Cancellation / Disruption (P2):**
1. Use Ava AI to check rebooking options — Ava handles most rebookings automatically
2. Verify traveler's profile has correct loyalty program numbers
3. Check `/v1/bookings` for the affected booking UUID
4. Coordinate with travel admin for policy exception approvals if rebooking exceeds budget

### Step 5 — Escalation Path

| Level | Contact | When |
|-------|---------|------|
| **L1** | Ava AI assistant | Always start here |
| **L2** | Navan Help Center | Ava cannot resolve; [app.navan.com/app/helpcenter](https://app.navan.com/app/helpcenter) |
| **L3** | Navan account manager | P1/P2 unresolved after 30 minutes |
| **L4** | Internal executive sponsor | Business-critical travel disruption |

### Step 6 — Post-Incident Review

After resolution, create a post-incident record:

```bash
cat > "incident-$(date +%Y%m%d-%H%M%S).md" <<'INCEOF'
## Incident Report
- **Severity**: P?
- **Duration**: Start — End
- **Impact**: Number of affected travelers/bookings
- **Root Cause**: (API outage / credential issue / sync failure / ...)
- **Resolution**: Steps taken
- **Prevention**: Changes to avoid recurrence
INCEOF
```

## Output

- Severity classification for the incident
- API health check results confirming platform vs local issue
- Executed playbook steps with outcomes
- Escalation actions taken with timestamps
- Post-incident report document

## Error Handling

| HTTP Code | Meaning | Runbook Action |
|-----------|---------|----------------|
| 401 | Authentication failed | Check credential rotation; re-authenticate |
| 403 | Access denied | Verify API integration is enabled in admin |
| 429 | Rate limited | Back off; check `Retry-After` header value |
| 500 | Server error | Navan-side issue; escalate to L2/L3 |
| 502/503 | Service unavailable | Platform outage; escalate immediately |

## Examples

Quick API status check during an incident:

```bash
# One-liner health probe
curl -s -o /dev/null -w "Auth: %{http_code} (%{time_total}s)\n" \
  -X POST "https://api.navan.com/ta-auth/oauth/token" \
  -H "Content-Type: application/x-www-form-urlencoded" \
  -d "grant_type=client_credentials&client_id=$NAVAN_CLIENT_ID&client_secret=$NAVAN_CLIENT_SECRET"
```

## Resources

- [Navan Help Center](https://app.navan.com/app/helpcenter) — Support portal and known issues
- [Navan Security](https://navan.com/security) — Infrastructure and compliance details
- [Navan Integrations](https://navan.com/integrations) — Connector status and documentation

## Next Steps

- Use `navan-debug-bundle` to collect full diagnostic data for support tickets
- Use `navan-prod-checklist` to harden your integration against future incidents
- Use `navan-common-errors` for detailed error code interpretation

Files in this skill

  • SKILL.md6.4 KB
  • source.json761 B

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.