---
title: "Connect an AI agent or coding tool to Sekura"
url: https://sekura.ai/connect/
description: "Sekura works from Claude Code, Cursor, GitHub Copilot, OpenAI Codex, Meta Muse and nearly forty other tools: what a connected tool reads and does, how paid actions are approved, limits, data handling, and the REST API reference."
updated: 2026-10-24
generator: sekura build, scripts/build-markdown.mjs
---
Connect

# Connect an AI Agent to Sekura

From Claude Code, Cursor, Copilot, Codex and Muse.

Sekura works from the tool you already code in. A connected tool does what your dashboard does: finds the repositories Sekura can scan, starts a scan, follows it, reads what it found with the proof, subscribes a repository to Sekura Always, and cancels.

- Sign in with GitHub, no key to copy
- Quoted before anything is charged
- The same prices as the dashboard

[Connect your coding tool](https://sekura.ai/connect/#init)[Connect Meta Muse →](https://sekura.ai/connect/#muse)

Claude Code, Cursor, GitHub Copilot, OpenAI Codex and nearly forty other tools connect as an MCP server; Meta Muse through the REST API. Nothing is started or charged until you have agreed to it in the conversation.

![Sekura — owl-in-shield mark](https://sekura.ai/branding/sekura-owl-v3.png)

The fastest way in

## One command connects every tool on your machine.

Run it once. It finds the coding tools you have, shows you what it would write, signs you in once in your browser, connects them, and installs the skill that teaches the agent to quote before it scans. Nothing to copy, no key to paste.

npx sekura@latest init

1. **Detects your coding tools.** It looks for the tools listed below by their configuration folders and commands. Nothing is written yet.
2. **Asks one question.** Connect every tool it found, for every project, with the skill, and sign in? Yes, No, or Edit, which opens the list of tools, the scope (every project, or this project only), the skill and the sign-in.
3. **Shows the plan.** Every file it would write and the exact entry, or the tool's own command, with your key shown as `Authorization: Bearer <your key, after sign-in>`. Nothing happens until you answer Apply. `--dry-run` stops here.
4. **Signs you in once.** In your browser: sign in with GitHub on sekura.ai and approve. On a machine with no browser of its own (SSH, a devcontainer, Codespaces, or with `--device`) it shows a code to enter at sekura.ai/connect/device from any other device.
5. **Applies it, and the skill.** One entry named sekura in each chosen tool, in that tool's own shape and with your key, plus the sekura skill that teaches the agent to quote before it scans. It says what each step did. A file with comments, such as Zed's settings, is never rewritten: you get the lines to add. Codex and Devin cannot take a key in their configuration, so it runs their own `mcp login`, one click with your browser already signed in.
6. **Checks the server answers.** It asks the Sekura server to answer before it tells you anything works.
7. **Gets you to a first scan.** It says what your account still needs, the Terms or a verified email, and waits while you do it in the browser. It offers to install the Sekura GitHub App and waits until the repository shows up. Then you pick a repository, the current folder's first. It starts no scan.
8. **Tells you what to do next.** Each tool's next step (restart Cursor; start a new Claude Code session, then type `/sekura`) and what to type to scan. Every scan is quoted first and starts only after you agree.

**It connects** Claude Code, GitHub Copilot in VS Code, OpenAI Codex, Cursor, Antigravity, Kiro, Zed, JetBrains Junie, Tabnine CLI, Devin Desktop and the Devin CLI, OpenCode, Goose, Cline and Factory Droid.

**Already connected?** Run it again to add a tool or refresh the skill: it changes nothing that is already right. `npx sekura@latest status` shows what is connected and who is signed in; `npx sekura@latest login` signs in again and gives the connected tools the new key; `npx sekura@latest logout` deletes the saved key; `npx sekura@latest uninstall` removes the entries, the skill, the guidance block and the saved key, and nothing else; `npx sekura@latest billing` lists your saved cards, masked, and `--open` opens the payment methods page.

**Options.** `--yes`, `--dry-run`, `--scope project`, `--tools claude,cursor`, `--no-skill`, `--no-login`, `--device`. For an unattended install, with a key from [Settings → Agents and API keys](https://sekura.ai/app/settings): `SEKURA_API_KEY=sek_live_… npx sekura@latest init --yes`.

### What stays untouched

- Every other server, setting and file: it sets one key, sekura, and reads nothing else.
- Your source code: nothing is read, uploaded or committed.

### Your key

- Signing in creates one Sekura key, named "Sekura CLI (your computer's name)".
- It is saved in `~/.config/sekura/credentials.json`, readable by you only (0600), and written as an `Authorization: Bearer` header into each tool's user configuration. Project scope never writes the key: project files get committed.
- Revoke it in Settings → Agents and API keys, which ends it everywhere. `sekura logout` deletes the saved copy; `sekura uninstall` removes the entries, the skill, the guidance block and the saved key.
- With `--no-login` there is no key: it writes the configuration only, and each tool signs in with its own OAuth flow the first time it uses Sekura.

### Paying

- A quote lists how you can pay: each saved card, shown only by its last four, Pay with a Checkout link, and Change payment method. Only the card you pick is charged.
- With no saved card, the agent runs `sekura pay`, which opens the Stripe Checkout link in your browser and waits. When the payment lands it shows the scan id and link, or says Checkout was closed unpaid. It opens only Stripe Checkout and Sekura links.
- To change cards, the agent runs `sekura billing --open`, which opens the payment methods page and shows the new list once your cards change. Then it quotes again.

### Review before running

- [The source](https://github.com/sekuraai/sekura-cli), MIT, with the tests that prove each tool’s file is written and nothing else changes.
- [The package on npm](https://www.npmjs.com/package/sekura): sekura 0.4.0, twenty-three files, no server.
- `npx sekura@latest init --dry-run` prints every write it would make and makes none.

## Key facts

- Works with: Claude Code, Cursor, GitHub Copilot, OpenAI Codex and the other tools under [Connect from your coding tool](https://sekura.ai/connect/#init); Meta Muse.
- Connecting: ask Muse to connect Sekura, or add the address to your coding tool, then sign in with GitHub and approve on the page it opens. There is no key to copy.
- Price: the same as on the dashboard. A scan a connected tool starts is Sekura Once, $199, and Sekura Always is $20, $100 (ScanPlus Always) or $300 (ScanPro Always) a month per repository, with a 14-day free trial. Every scan through a connected tool is quoted at the dashboard’s price before anything is charged.
- Paying: the card saved on your Sekura account, or a Stripe Checkout page; in Meta Muse only, you can also approve the amount in the chat and Link pays. Card details never pass through Sekura, Muse or your tool.
- Limits: 120 requests a minute per connection and 10 confirmed actions an hour per account.

## What the connector does

**It reads** what your Sekura dashboard shows you:

- your account, and what it still needs before a scan can run, such as the Terms or the Sekura GitHub App;
- the repositories you granted the Sekura GitHub App, which are the ones Sekura can scan;
- each repository’s plan, Sekura Once or Sekura Always, with its schedule and last scan;
- your scans, their status, a summary of what each found, and the link to its full report;
- your billing: the card on file by brand and last four digits, your Always subscription, and this month’s charges.

**It acts**, each time only after you have agreed ([how](https://sekura.ai/connect/#paid)):

- start a Sekura Once scan, or scan again a repository already on your dashboard;
- subscribe a repository to Sekura Always on the schedule you choose, or move one from Once to Always;
- change when an Always repository is scanned;
- cancel Sekura Always on a repository, from the end of the period already paid for;
- cancel a scan in its first five minutes, as Cancel on the dashboard does.

Each of these uses the same functions your dashboard uses, so a tool cannot see or do anything the dashboard would not let you. **It cannot** see anything you have not granted (repositories without the Sekura GitHub App, other people’s scans, card numbers or API keys), and it cannot grant a repository: that is GitHub’s install screen, which the tool links you to.

## What you need

- A Sekura account. Signing in with GitHub creates one; accept the Terms when Sekura asks. GitHub supplies the verified email address reports are sent to.
- The Sekura GitHub App installed on the repositories you want scanned. Each must not be empty.
- For Muse, a Meta Muse account; for a coding tool, the tool itself, connected as its panel above shows.
- For a scan or Sekura Always, one way to pay: a card already saved on your Sekura account, or, without one, a Stripe Checkout link the tool gives you. In Meta Muse only, you can also approve the amount in the chat and Link pays it; no coding tool asks for that. Every scan through a connected tool is quoted at the dashboard’s price before anything is charged.

## How paid actions work

Everything a tool does on your behalf that charges, authorizes or stops something takes two calls, so that you see what will happen before it happens.

1. You ask for a scan of a repository. The tool asks Sekura for a quote, and Sekura answers with the price, how it would be paid, and the authorization text you are agreeing to. Nothing has happened yet.
2. The tool shows you the price and the text and asks you to agree. In Meta Muse, if you pay through Link, this is where you approve the amount.
3. The tool confirms, repeating the price and the text’s version. If either changed since the quote, Sekura refuses, charges nothing, and the tool shows you the new quote.

A Link payment, in Muse, is for the amount you approved and no more. Your saved card is charged only when the confirmation says to charge it, after the quote named it by brand and last four digits. With neither, you get a Stripe Checkout link: the scan or subscription starts when Stripe confirms your payment, and if you close the page without paying, nothing starts.

Sekura Always works the same way: the quote shows the monthly price, any free trial and the schedule before anything is subscribed. Changing a schedule charges nothing and takes one call. Cancelling always asks first. A scan can be cancelled in its first five minutes: one still waiting stops at once, one a scanner has picked up is asked to stop and may finish, and after five minutes it runs to the end. Always keeps its scheduled scans until the end of the period you have already paid for, then stops. Neither deletes your scan history or your authorizations.

The authorization is recorded in your name, as the name or email on your Sekura account; the tool cannot supply a different one. The record also names the connection the tool used, and it is listed with every other authorization you have given under [Authorizations](https://sekura.ai/app/authorizations).

## Limits

- 120 requests a minute per connection.
- 10 confirmed actions an hour per account: starting a scan, subscribing, changing a schedule or cancelling. Asking for a quote or a preview does not count.
- 30 connection attempts an hour from one network address; a connect link works for 10 minutes.
- Over a limit, the answer is `429 Too Many Requests` with a `Retry-After` header giving the seconds to wait.
- A request body over 64 KB is refused with `413`.
- One scan runs at a time per account; the others wait their turn.

## Data handling

The API answers a tool with what your Sekura dashboard shows you, for your account and the repositories you granted the Sekura GitHub App only: your name and email, what your account still needs before a scan can run, your repositories and plans, your scans’ status and metadata, a summary of each scan’s findings (severity, title, file and a one-line description), a link to the full report, and the brand and last four digits of a saved card. The full report stays on sekura.ai behind your sign-in.

Card details never pass through Sekura, Muse or your tool. When Link pays, Stripe holds the card and Muse hands Sekura a payment token limited to the amount you approved; a saved card and a Checkout payment stay with Stripe as they do on the dashboard.

What Muse does with those answers is governed by Meta’s terms, and what a coding tool does with them by its vendor’s. What Sekura does with your data is in the [privacy policy](https://sekura.ai/privacy/) and the [terms of service](https://sekura.ai/terms/); a scan a tool starts is authorized and recorded on the same terms as one you start on sekura.ai.

## For developers: the REST API

- Base URL: `https://sekura.ai/api/muse/v1`. JSON in and out.
- OpenAPI 3.1: <https://sekura.ai/api/muse/v1/openapi.json>, readable without a key. It is the reference for every schema.
- Authentication: `Authorization: Bearer sek_live_…` on every call except connecting and the OpenAPI document.
- Errors: `{ code, error, link }` — a code to branch on, one sentence for the person, and a link to where they take the next step.
- `401` no key, or a revoked one; `403` a scope is missing, and the error names it; `402` payment is needed, and `link` is a Stripe Checkout page; `409` the amount or the authorization text changed since the quote, and the body carries the new quote; `429` with `Retry-After`.

### Scopes

| Scope | What it permits                                                                                                                                                                                                                                                                                                                                            |
| ----- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| read  | reading your account, the repositories you granted the Sekura GitHub App, your plans, your scans, their findings and report links, and your billing summary.                                                                                                                                                                                               |
| write | asking for a price and then starting a Sekura Once scan, subscribing a repository to Sekura Always, changing its schedule, cancelling Always and cancelling a scan. Every one of them first shows you what it will do and what it costs, and is paid only in the way you agreed to: approved in the Muse chat, your saved card, or a Stripe Checkout page. |

### Connecting

The device-authorization pattern: no redirect URL, and the person never handles the key. Show the person the link; poll with the code, no faster than `interval`. Polling answers `authorization_pending`, `slow_down`, `access_denied` or `expired_token` until the person approves, then the key exactly once.

```
POST https://sekura.ai/api/muse/v1/connect
→ { "code": "…", "verificationUrl": "https://sekura.ai/…", "expiresIn": …, "interval": … }

POST https://sekura.ai/api/muse/v1/connect/token      (with the code, every interval seconds)
→ { "code": "authorization_pending", … }   the person is still on the page
→ { "apiKey": "sek_live_…", "scopes": ["read", "write"] }   once
```

### Quote, then confirm

Every call that charges, authorizes or stops something has a `GET` quote or preview that changes nothing, and a `POST` that repeats what the quote said. Show the person the quote before you confirm it.

```
GET  https://sekura.ai/api/muse/v1/scans/quote?repository=your-org/your-repo
→ the amount, how it would be paid, the authorization text and its version

POST https://sekura.ai/api/muse/v1/scans
{ "repository": "your-org/your-repo",
  "disclosureVersion": "…",          repeated from the quote
  "amountCents": …,                  repeated from the quote
  "payment": { "sharedPaymentToken": "spt_…" } }
  or  "payment": { "savedCard": true }
  or  no payment: 402 with a Stripe Checkout link
```

### Operations

| Call                                          | Scope | What it does                                                                                                                                                                                     |
| --------------------------------------------- | ----- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| POST /connect                                 | none  | Starts connecting: answers a code for the agent to poll with and a link for the person to open.                                                                                                  |
| POST /connect/token                           | none  | Polls with the code until the person has approved, then answers the API key, once.                                                                                                               |
| GET /account                                  | read  | Name and email, whether the Terms are accepted, the GitHub App’s installations, a billing summary without card details.                                                                          |
| GET /repositories                             | read  | The repositories granted to the Sekura GitHub App, per installation, marked private or empty.                                                                                                    |
| GET /plans                                    | read  | Each repository’s plan, Sekura Once or Sekura Always, with its schedule and last scan.                                                                                                           |
| GET /scans                                    | read  | Your scans, newest first, 1 to 20 at a time.                                                                                                                                                     |
| GET /scans/{id}                               | read  | One scan: status, phase, findings by severity, where the report was sent.                                                                                                                        |
| GET /scans/{id}/findings                      | read  | Counts by severity and the most severe findings, each with title, file and one line.                                                                                                             |
| GET /scans/{id}/report-link                   | read  | The link to the full report on sekura.ai, while the report is kept.                                                                                                                              |
| GET /billing                                  | read  | The card on file by brand and last four, the Always subscription, charges this month.                                                                                                            |
| GET /scans/quote?repository=                  | write | The price of a Sekura Once scan, how it would be paid, and the authorization text with its version. Changes nothing.                                                                             |
| POST /scans                                   | write | Starts the scan the quote described, repeating its amount and version.                                                                                                                           |
| POST /scans/run-now                           | write | Brings forward the next scheduled scan of a repository on Sekura Always; the schedule continues from the slot after it. Charges nothing and records no new authorization.                        |
| GET /always/quote?repository=&schedule=&tier= | write | For the plan chosen (always, plus or pro; always if none is given): the monthly price, any free trial, the schedule in words, how it would be paid, and the authorization text. Changes nothing. |
| POST /always                                  | write | Subscribes the repository on the plan the quote described, or moves it from Once to Always.                                                                                                      |
| PATCH /plans/{id}/schedule                    | write | Changes when an Always repository is scanned. Charges nothing; one call.                                                                                                                         |
| GET /plans/{id}/cancel-preview                | write | Names the repository and the date its scans would stop. Changes nothing.                                                                                                                         |
| POST /plans/{id}/cancel                       | write | Cancels Sekura Always at the end of the period already paid for.                                                                                                                                 |
| GET /scans/{id}/cancel-preview                | write | Whether the scan can still be cancelled, and whether cancelling is certain. Changes nothing.                                                                                                     |
| POST /scans/{id}/cancel                       | write | Cancels the scan in its first five minutes.                                                                                                                                                      |
| GET /openapi.json                             | none  | The OpenAPI 3.1 document for every operation above.                                                                                                                                              |

## Aider and Jules

Neither can connect to an MCP server, so neither gets a Sekura connector.

- **Aider** has no MCP support. Copy the findings you want fixed from the report on sekura.ai into a file and give it to Aider with `aider --read findings.md`. Each finding names its file, which is what Aider needs to find the code.
- **Jules** connects only to servers Google has chosen. A section like the one below in the repository’s `AGENTS.md` tells Jules how to treat a task that names a Sekura finding. Never put a Sekura key in `AGENTS.md`: it is committed with the repository.

```
## Security findings

Sekura scans this repository. When a task names a Sekura finding, the
finding's file and line are in the task; fix it there and keep the fix to
that finding. Sekura's API is documented at https://sekura.ai/connect/#developers.
```

## Amazon Q Developer and Gemini Code Assist

- **Amazon Q Developer** takes no new sign-ups, and its support ends on 30 April 2027\. Kiro, its successor, copies Q Developer’s MCP configuration when you move, so follow [Kiro](https://sekura.ai/connect/#tools-kiro).
- **Gemini Code Assist and Gemini CLI** have been replaced by Antigravity; follow [Antigravity](https://sekura.ai/connect/#tools-antigravity). Where Gemini Code Assist Standard or Enterprise is still in use, its agent mode reads `~/.gemini/settings.json`. It cannot sign in, so it needs a key, and it reads `httpUrl` where Antigravity reads `serverUrl`.

```
{
  "mcpServers": {
    "sekura": {
      "httpUrl": "https://sekura.ai/mcp",
      "headers": {
        "Authorization": "Bearer sek_live_…"
      }
    }
  }
}
```

## Example prompts

- Which of my repositories can Sekura scan?
- Run a Sekura scan on your-org/your-repo.
- Is my Sekura scan of your-org/your-repo finished yet?
- What did my last Sekura scan find? Summarise the critical and high findings.
- Give me the link to the full report for that scan.
- Subscribe acme/shop to Sekura Always every Monday at 02:00.
- Cancel the scan that just started.
- Move my Always scan of acme/shop to Fridays.

## Help

- Write to [support@sekura.ai](mailto:support@sekura.ai) with the time and what you asked the tool. Never send an API key.
- The support icon on any sekura.ai page opens an agent that can read your account’s situation and help you get unstuck.
- If you think a connection or a key has leaked, remove it in [Settings → Agents and API keys](https://sekura.ai/app/settings) first, then write to us.
