Bastion Helix for Jira
Guide

See Claude Code spend per person, team and Jira issue

Point Claude Code’s own telemetry and a GitHub webhook at Workforce Intelligence, and see what AI coding costs — per person, per team, and per Jira issue it helped build.

·3 min read·Workforce Intelligence
People, commits and AI usage join at one point and become spend by team$295

Why push, not pull

Tools that report AI spend usually ask for an admin key to your AI vendor and call its API on a schedule. That is a standing credential to your billing account, held by someone else. Workforce Intelligence works the other way: your tools send data in, and the app never calls out. Claude Code reports its own usage; GitHub posts commits and pull requests; nothing holds a key to your vendor accounts.

Step 1 — Open the setup page

You need to be a Jira administrator. Open Jira's app settings, find Bastion Helix, and scroll to Workforce Intelligence — setup. Under Data sources there are three tabs: Claude Code, GitHub and Anthropic & OpenAI billing. Each shows the address and token to use.

Tokens are shown only to Jira administrators. Treat them like passwords; New token replaces one instantly.

Step 2 — Switch on Claude Code telemetry

Claude Code can report its own usage over OpenTelemetry: cost, tokens, sessions, lines changed, commits and pull requests, per person. The simplest way to roll the settings out is your managed settings file, which applies to everyone and takes precedence over personal settings. It looks like this — copy the real one from the Claude Code tab, which has your address and token filled in:

{
  "env": {
    "CLAUDE_CODE_ENABLE_TELEMETRY": "1",
    "OTEL_METRICS_EXPORTER": "otlp",
    "OTEL_EXPORTER_OTLP_METRICS_PROTOCOL": "http/json",
    "OTEL_EXPORTER_OTLP_METRICS_ENDPOINT": "YOUR ADDRESS FROM THE SETUP PAGE",
    "OTEL_EXPORTER_OTLP_METRICS_HEADERS": "x-bastion-token=YOUR TOKEN",
    "OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE": "delta",
    "OTEL_METRIC_EXPORT_INTERVAL": "300000"
  }
}

For a quick trial on one machine, the same settings work as export lines in a shell profile. Usage arrives every five minutes. These settings send metrics only — no prompts, no code, no file contents.

To put people on teams automatically, add OTEL_RESOURCE_ATTRIBUTES="team.id=Platform" per team. Anyone you place on a team by hand stays where you put them.

Step 3 — Add the GitHub webhook

  1. In GitHub, open your organization (or one repository) → Settings → Webhooks → Add webhook.
  2. Payload URL: the address from the GitHub tab.
  3. Content type: application/json. Secret: the secret from the same tab — deliveries that don't match it are refused.
  4. Events: Let me select individual events → Pushes and Pull requests. Save.

GitHub sends a ping straight away; a green tick next to the webhook means it arrived.

Step 4 — Put issue keys where the app can see them

Commits and pull requests are tied to Jira issues by the keys in their message, title or branch name. A branch called KAN-12-fix-export ties every commit pushed to it to KAN-12. Only keys of projects that exist on your site count, so UTF-8 in a message is not mistaken for an issue.

Work is counted as AI-assisted when the commit or pull request carries a recognised signature — the Co-Authored-By trailer or "Generated with" line that Claude Code, Copilot, Cursor, Codex, Gemini and Devin add. Bots such as Dependabot are kept apart from people.

Step 5 — Read the overview

Open Bastion Helix from Jira's Apps menu and scroll to Workforce Intelligence. The overview shows AI spend, how many people are using AI, unassigned spend (usage from accounts nobody is linked to yet), and the cycle time of AI-assisted issues next to the rest — by period and team. Below it, work records list each issue with the people and tools behind it.

On any issue, the Who built this panel shows the people, commits and pull requests, AI tools, hours logged, cycle time and the issue's share of AI cost. That share is each person's AI spend on the days they worked on the issue, divided across everything they touched that day.

Step 6 — Join people’s accounts together

One person shows up as a Jira account, an email address in telemetry and a GitHub login. The app joins them automatically where it can — a matching email, for instance. Where it can't, open Contributors on the setup page and merge them by hand. Your corrections stay put: automatic matching never undoes them.

Estimates and bills

Claude Code's cost counter is its own estimate from token counts, so it is labelled estimated. Spend taken from a vendor's bill is shown as spend, and replaces the estimate for the same day. The third tab, Anthropic & OpenAI billing, is a small script you run in your own GitHub Actions with your own admin keys, which posts the billed figures in. in testing That script is still being tested against live billing accounts.

Only Jira administrators, and the people they name under Who can see it, can see any of this.

Bastion Helix for Jira isn’t on the Marketplace yet. All seven modules are built and running in our own test Jira site. Try the live demos, or leave your email below to hear the day early access opens.

Early access

Be first in when it opens.

One email when early access opens. Nothing else — no newsletter, no drip sequence, and the list isn't shared with anyone.

You're on the list. Talk soon.

Early access members get the first year at launch pricing, locked.
Your address is stored with Resend, the email service that will send that one email.

Recorded from the live demo on this site: the module’s real code running on sample data. Nothing is edited apart from the title cards.