Compare

oasdiff vs Optic

Last checked 2026-11-097 min read

oasdiff and Optic are command-line tools that compare two versions of an OpenAPI spec and report the breaking changes between them. The biggest difference today is maintenance: oasdiff released v1.37.0 on November 8, 2026, while Optic’s GitHub repository was archived on January 12, 2026, and its last npm release, 1.0.9, is from August 2025. Optic also did two jobs oasdiff does not: style lint rulesets and keeping a spec in step with test traffic. Both tell the author of a change what changed. Telling the teams that call the endpoint is the job of the third option on this page, Graphwake.

ExamplePull request #1284 · orders-api
#team-checkoutGraphwake in Slack

Breaking change in PR #1284

GET /orders/{id} · orders-api

Owned by payments-team

  • total was removed
  • currency is now required

Author: dana-k

orders-api3 breaking changes
  • checkoutSlack #team-checkout
  • mobile-appSlack #mobile-alerts
  • reportingEmail
  • searchquiet, not subscribed
In Graphwake: impact79/100High
A breaking change reaches only the three teams that subscribed to the endpoints it touches. search stays quiet. The impact score is in Graphwake, not in the message.

Graphwake is for you if

  • Your problem is telling the consuming teams, not finding the change.
  • You want an impact score before the merge, and an ownership map.
  • You want a hosted breaking-change check with nothing to run.

Already using oasdiff or Optic? Keep it. Graphwake works next to it.

On this page
  1. What each tool is
  2. At a glance
  3. oasdiff or Optic?
  4. Where Graphwake fits
  5. Moving from Optic to oasdiff
  6. When oasdiff or Optic alone is enough
  7. Using oasdiff and Graphwake together
  8. Questions

What each tool is

oasdiff

An open-source Go CLI (Apache-2.0) with commands such as breaking, changelog, diff and validate. It ranks each change ERR (breaking), WARN (possibly breaking) or INFO, and --fail-on ERR makes it exit with code 1, which is how a CI job fails on a breaking change. You can change the severity of any check, or ignore a known change, with a config file. The GitHub Action adds annotations to the pull request and a side-by-side review link. oasdiff Pro adds approve or reject for each change from the PR comment, an audit trail, and a gate that blocks merging until every change is approved.

Optic

An MIT-licensed npm CLI (@useoptic/optic) for OpenAPI linting, diffing and testing. optic diff openapi.yml --base main compares the spec on your branch with the one on main, and --web opens the result as an HTML report. Built-in rulesets cover breaking changes, consistent naming and required descriptions, and it can run Spectral rules. optic capture sends your test traffic through a local proxy, checks each request and response against the spec, and --update patches the differences into the file. The repository was archived by its owner on January 12, 2026, and is read-only. Its README says Optic Labs is now part of Atlassian.

At a glance

oasdiff and Optic facts as of 2026-11-09, from their GitHub repositories, documentation and oasdiff.com/pricing. “Not listed” means we did not find it on their pages; it does not mean it does not exist.

FeatureoasdiffOpticGraphwake
Main questionWhat changed?What changed, and does the spec match the traffic?Who is affected, and how badly?
Knows which teams consume each endpointNot listedNot listedYesconsumer teams subscribe to endpoints
Where the result goesExit code, PR annotations, a review link in a PR comment or the job summaryTerminal output, or an HTML report with --webOnly subscribed consumer teams, in Slack, Microsoft Teams or email
Impact score and ownership mapNot listedNot listedYes0-100 with public rules
Finds breaking changes in OpenAPI specsYesYesYes
MaintenanceActivev1.37.0 released 2026-11-08Repository archived 2026-01-12last npm release 1.0.9 (2025-08-10)Hosted service, run by Graphwake
Style lint rulesNot listedvalidate checks a spec against OpenAPI itselfYesbuilt-in rulesets, Spectral rulesWorks next to your linter
Spec from test trafficNot listedYesoptic captureReads the spec you publish or send from CI
Fails CI on a breaking changeYeswith --fail-on; Pro adds an approval gateNot listedon the pages we readNeverthe CI step never fails or blocks a build
PriceFree CLI and ActionPro listed at $100 per monthFreeMIT codeSee pricing
See who your next breaking change reaches.Paste a spec URL or add one CI step. 7-day free trial. Cancel before day 7 and you pay nothing.
Start free trial

oasdiff or Optic?

  • oasdiff if you are setting up a breaking-change check now: it is maintained, can fail CI with --fail-on, and lets you tune the severity of each check.
  • Optic if it already runs in your pipeline and you can own an archived MIT codebase, or you rely on optic capture or its lint rulesets.

Where Graphwake fits

oasdiff and Optic both tell the person who changed the spec what changed. Neither one’s pages describe telling the teams that call the endpoint, and the author of a pull request rarely knows who those teams are. Graphwake is the third option for that job. It finds the breaking changes in your OpenAPI spec, keeps a list of consumer teams (each team subscribes to the endpoints it calls), and sends each breaking change only to those teams, in Slack, Microsoft Teams or email. If the spec came through CI, the alert goes out while the change is still a pull request.

  • Alerts to subscribed teams

    Only the teams subscribed to an endpoint hear about its breaking changes, in Slack, Microsoft Teams or email.

  • Impact score before the merge

    Each change set gets a 0-100 score with public rules: breaking changes, affected teams, people to notify, blind spots.

  • Ownership map

    Owners and orphan endpoints, with a weekly ownership report.

  • Hosted: nothing to run

    A published spec URL checked every 30 minutes, or one CI step that never fails or blocks a build.

Moving from Optic to oasdiff

If the job you need is the breaking-change check, the move is small, because both tools read the same OpenAPI files. The jobs oasdiff does not do need their own answer.

  1. Keep your spec files

    oasdiff reads the same OpenAPI files Optic did. Nothing in the spec changes.

  2. Swap the CI step

    Replace optic diff openapi.yml --base main with the oasdiff GitHub Action below. It compares the spec on the pull-request branch with the base branch. Use fail-on: ERR to fail only on definite breaking changes, or leave fail-on out to report without failing. fail-on: WARN also fails on possibly-breaking changes.

  3. Move the style rules

    oasdiff checks breaking changes, not style. If you used Optic’s naming or description rules, run a linter such as Spectral next to it.

  4. Decide what replaces capture

    If you used optic capture to keep the spec in step with traffic, oasdiff has no equivalent. Keep Optic for that one job, or generate the spec from your code.

yaml
name: oasdiff
on:
  pull_request:
    branches: [ "main" ]
permissions:
  contents: read
  pull-requests: write   # lets the action post the review link as a PR comment
jobs:
  breaking-changes:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v7
      - run: git fetch --depth=1 origin ${{ github.base_ref }}
      - uses: oasdiff/oasdiff-action/breaking@v0
        with:
          base: 'origin/${{ github.base_ref }}:openapi.yaml'
          revision: 'HEAD:openapi.yaml'
          fail-on: WARN
          github-token: ${{ github.token }}
.github/workflows/oasdiff.yaml, from the oasdiff-action README. Replace openapi.yaml with the path to your spec.
Good to know

When oasdiff or Optic alone is enough

  • Only the pull request author needs to know what changed.
  • You want CI to fail on a breaking change (oasdiff --fail-on), or approval of each change before merge (oasdiff Pro).

Using oasdiff and Graphwake together

Keep the oasdiff Action in the pull request so the author sees the diff, and add the Graphwake CI step or point Graphwake at your published spec URL, which it checks every 30 minutes. The author gets the diff; the consumer teams get the alert. More on why those are different jobs in API breaking change alerts.

Questions

Is Optic still maintained?

Its GitHub repository was archived by its owner on January 12, 2026, and is read-only. The last npm release, 1.0.9, is from August 10, 2025. The README says Optic Labs is now part of Atlassian; Atlassian announced the acquisition in April 2024.

Is oasdiff a drop-in replacement for Optic?

For the breaking-change check, close to it: both compare two OpenAPI specs, and oasdiff reads the same files. For lint rulesets and generating or patching a spec from traffic, no: use a linter such as Spectral, and keep Optic or generate the spec from code for the traffic part.

Can oasdiff fail a pull request on a breaking change?

Yes. --fail-on ERR (or the Action’s fail-on input) exits with code 1 when a breaking change is found. oasdiff Pro adds approval of each change before merge.

Do oasdiff or Optic tell the teams that consume an endpoint?

Not on the pages we read: their results go to the CI job, the pull request or a report. Graphwake sends a breaking change to the teams subscribed to that endpoint.

Pick an endpoint. See who it reaches. 7-day free trial. Cancel before day 7 and you pay nothing.

Start free trial

Sources and last verified

Competitor facts were checked on 2026-11-09; check their pages for the latest.