Terms of service

Last updated: 9 November 2026

These terms are an agreement between DiffCost ("we", "us") and the organization that uses the DiffCost service ("you"). By signing in at diffcost.dev, creating an API key or subscribing, you accept these terms for your organization, and you confirm that you're allowed to do that on its behalf.

What these terms cover#

DiffCost has two parts:

  • The DiffCost GitHub Action (diffcost/action) runs in your own GitHub Actions runner. It's open source under the Apache License 2.0, and that licence, not these terms, governs its code. Using the Action without an API key doesn't involve the DiffCost service.
  • The DiffCost service at diffcost.dev is the dashboard, the API that the Action sends results to when it has an API key, merge blocking through the DiffCost GitHub App, and Slack alerts. These terms cover the service.

Accounts and API keys#

  • You sign in with GitHub. Each DiffCost account belongs to one GitHub organization, and that organization's GitHub owners are its DiffCost admins.
  • Admins create API keys. Keep them secret (store them as GitHub Actions secrets), and revoke any key you think has leaked. You're responsible for what's done with your organization's keys.
  • How many people can use the dashboard depends on your plan's seats, as described in Plans and billing.

Plans, trial and payment#

  • Plans and prices are on the pricing page. Prices are in US dollars and don't include taxes, which are added where the law requires them.
  • Each organization gets one 14-day Team trial. It starts when the first GitHub owner of the organization signs in, and needs no card. If it ends without a subscription, the organization moves to the Free plan.
  • Paid plans are monthly subscriptions, billed in advance through Stripe, and they renew every month until cancelled. If you buy through Google Cloud Marketplace, Google bills you instead, and Google's Marketplace terms also apply.
  • Admins can cancel at any time in the Stripe customer portal. The plan stays active until the end of the period you've paid for, and then the organization moves to Free.
  • If a payment fails, the plan continues while Stripe retries the payment. If the subscription becomes unpaid, the organization moves to Free until the payment method is updated.
  • You can ask for a full refund of any payment within 30 days of the date it was charged. An admin emails support@diffcost.dev, naming the organization, and we refund the payment to the card or account it came from. A refund doesn't cancel the subscription: cancel it in the customer portal too if you don't want it to renew. This is in addition to any refund rights the law gives you.
  • We'll give admins at least 30 days' notice before a price change applies to an existing subscription.

Moving to another plan keeps your thresholds, API keys and history. What changes when your plan changes describes what each plan turns on and off.

Acceptable use#

You agree not to:

  • use the service for repositories that your organization doesn't control, or share API keys outside your organization;
  • load-test the service, or try to get around its rate limits, plan limits or seat limits;
  • disrupt the service, or send it data designed to harm it or other customers;
  • resell the service, or use it to build a competing service;
  • use the service in breach of the law, or of GitHub's, Google Cloud's or Slack's terms.

If you find a security problem, please report it to support@diffcost.dev, as described on Security and data.

Your data#

  • Your data stays yours. We use it only to provide the service, as described in the privacy policy.
  • With an API key, the Action sends the service numbers and identifiers: repository names, pull request numbers, commit SHAs, costs, bytes and counts. It never sends SQL, table names or file paths. What data leaves your runner lists every field.
  • You're responsible for having the right to send us what your workflow sends, including the pull request author's GitHub login if you turn on send_author.
  • We keep your organization's data until an admin asks us to delete it. To ask, an admin emails support@diffcost.dev from their own address.

Cost estimates and merge blocking#

Please read this section carefully.

  • DiffCost's figures are estimates. They come from BigQuery dry runs, which report how many bytes a query would scan when it's planned, multiplied by the price in your settings. Your actual BigQuery bill can differ, for example because of cached results, Editions (slot) pricing, data that changes after the pull request, or how often the query really runs. A monthly figure is only as good as the runs per month you give it.
  • Some queries can't be costed, for example when BigQuery returns an error. The pull request comment lists them.
  • Merge blocking works only once you've set it up: installed the DiffCost GitHub App, made diffcost/cost-check a required check, and protected your workflow files. A pull request can change its own workflow; see Keep the required check trustworthy.
  • Merge blocking depends on GitHub and on the DiffCost service being available. When the Action can't reach the service, no commit status is posted for that run, and the pull request comment says that nothing was enforced.
  • You remain responsible for reviewing, approving and merging your changes, and for your BigQuery and other Google Cloud charges. DiffCost doesn't run your queries.

Availability and support#

  • We work to keep the service available, but we don't promise a specific uptime unless we've agreed a service level with you in writing.
  • Support is by email at support@diffcost.dev.
  • We may change the service. If we discontinue it, we'll give admins at least 30 days' notice and refund the unused part of any prepaid period.

Suspension and termination#

  • You can stop at any time: remove the API key from your workflow and cancel any subscription. The Action keeps working without an API key.
  • We may suspend or close your organization's access if it breaks these terms, doesn't pay, or puts the service or other customers at risk. Where we can, we'll tell an admin first and give a chance to fix the problem.
  • After your access ends, we delete your organization's data when an admin asks us to.

Disclaimers#

The service is provided "as is" and "as available". To the extent the law allows, we disclaim all warranties, express or implied, including merchantability, fitness for a particular purpose and non-infringement. We don't warrant that estimates are accurate, or that the service will be uninterrupted or free of errors.

Limitation of liability#

To the extent the law allows:

  • neither party is liable for indirect, incidental, special or consequential damages, or for lost profits, revenue or data, even if it was told they were possible;
  • we're not liable for your BigQuery or other cloud charges, including charges from queries that DiffCost estimated, couldn't estimate, or didn't block;
  • our total liability for all claims about the service is limited to the greater of the amount you paid us in the 12 months before the claim arose and US$100.

Nothing in these terms limits liability that the law doesn't allow to be limited.

Changes to these terms#

We may update these terms. We'll post the new version on this page with its date. For a change that materially reduces your rights, we'll give admins at least 30 days' notice. If you keep using the service after a change takes effect, the updated terms apply.

Governing law#

These terms are governed by the laws of New South Wales, Australia, and disputes about them go to the courts of New South Wales.

Contact#

DiffCost, New South Wales, Australia. Email: support@diffcost.dev.