Skip to content
Docs
Engineering

Sentry

Let hires find and read errors in Sentry, resolve, archive and assign them, check releases, and be woken when something new or regressed shows up.

Explore 8 actions and their permissionsExact inputs, sign-in scopes, access limits and approval rules.

With Sentry (open source), a hire can:

  • search issues the way you do in Sentry (is:unresolved level:error, release:1.4.0, words from the error), sorted by last seen, first seen, events or users,
  • read an issue with its latest event: the error, where it happened in your code, the request path, and tags like environment, release and browser,
  • resolve an issue (now or in the next release), archive it, reopen it, and assign it,
  • list recent releases and how many new issues each brought.

It works on sentry.io, in any region, and on a Sentry you run yourself.

Personal data stays in Sentry

Hires don't see who hit an error. The event's user, email addresses, IP addresses, cookies and headers are left out, query strings are cut from URLs, and anything that looks like an email, an IP address or a token is replaced before the hire reads it.

1. Make an auth token in Sentry

  1. Open Personal Tokens in Sentry (the form in Roster links there too, on your own Sentry's address if you run one) and click Create New Token.
  2. Tick these scopes: event:read (and event:write, for hires that resolve, archive or assign), project:read, org:read and project:releases.
  3. Create it and copy the token.

Organization tokens (Settings → Developer Settings → Organization Tokens) can't change issues, so hires using one can only read.

What hires do shows as the token's owner.

2. Connect it in Roster

  1. Open Integrations → Tools → Add a tool, search for Sentry and choose it.
  2. Auth token: paste the token.
  3. Sentry address: leave https://sentry.io for sentry.io; Roster finds your organization's region (US or EU) itself. If you run Sentry yourself, put its address.
  4. Organization: your organization's slug, from your Sentry address. In acme.sentry.io or sentry.io/organizations/acme/ it's acme.
  5. Click Connect. Roster checks the token on your organization, and the connection shows Connected as its name. If Sentry refuses the token, or it can't read the organization (org:read), Roster says so and saves nothing.

3. Give hires access

On the hire's Tools tab, click Give access on Sentry:

  • Read only: it can search and read issues and see releases, and nothing else.
  • Read and write: it can also resolve, archive, reopen and assign issues.
  • Projects: project slugs like web or api. Leave it empty for every project the token can reach. Anything outside the list is refused.

Hires refer to issues by their short ID, like WEB-1A, the way Sentry shows them.

Watching for new and regressed issues

A hire's responsibility can watch Sentry: it's woken when an issue appears for the first time, or when a resolved one comes back, with the list. An issue that keeps happening isn't reported again until it regresses again. Checking costs nothing when nothing changed.

If something goes wrong

  • "Didn't accept the connection's credential": the token was revoked, or belongs to another organization.
  • "Doesn't allow this": the token lacks a permission, often Issue & Event: write when a hire tried to resolve or assign.
  • "Couldn't find that": the organization slug is wrong, or the issue is in a project the token can't see.

Tools and permissions reference

This reference is built from the same definitions Roster uses to connect Sentry and give hires access. It updates with each release.

Authentication and requested permissions

The account or app you connect sets the outer limit. Each hire's access can narrow it further. Connecting a tool gives it to no hire until you give access on that hire's Tools tab.

API key or access token

In Sentry: Settings → Developer Settings → Organization Tokens (or a personal token with event:read, event:write, project:read, org:read, project:releases).

When making a key, use these permissions from the connection guide:

  • event:read
  • event:write
  • project:read
  • org:read
  • project:releases

Connection fields

Sentry connection fields
FieldWhat to provide
Auth token
token
Required · sealed secret
In Sentry: Settings → Developer Settings → Organization Tokens (or a personal token with event:read, event:write, project:read, org:read, project:releases).
Sentry address
url
Optional
Leave as it is for sentry.io (any region). Self-hosted: your Sentry's address.

Starts with: https://sentry.io.

Organization
organization
Required
From your Sentry address: in acme.sentry.io or sentry.io/organizations/acme/ it's acme.

Per-hire limits

Read-only hires receive only actions that read. Read-and-write access also allows actions that change things, where the connection itself permits them. An empty resource allowlist usually means everything the connected account can reach; each field below explains its meaning.

Sentry per-hire limits
FieldWhat to provide
Projects
projects
Optional
Project slugs like web or api, one per line. Leave empty for every project the token can reach.

Actions

8 actions: 4 only read and 4 change something. A read action may still need approval when your workspace or hire is set to ask. A locked approval requirement always applies.

8 of 8 actions. Open an action for its arguments and full input schema.

list_projectsRead only

The Sentry projects this hire can use.

Approval: Uses your workspace and hire approval settings.

This action takes no arguments.

Full input schema (JSON)
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "object",
  "properties": {}
}
search_issuesRead only

Find issues with Sentry's search, e.g. is:unresolved, is:unresolved level:error, release:1.2.0, or words from the error. Sort by last seen (date), first seen (new), events (freq) or users (user).

Approval: Uses your workspace and hire approval settings.

Arguments for search_issues
ArgumentTypeDetails
queryOptionalstringSee input schema below.Default: "is:unresolved"
projectOptionalstringproject slug, e.g. web
sortOptional"date" | "new" | "freq" | "user"See input schema below.Default: "date"
periodOptionalstringSee input schema below.Default: "14d"
limitOptionalintegerSee input schema below.Default: 25
Full input schema (JSON)
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "object",
  "properties": {
    "query": {
      "default": "is:unresolved",
      "type": "string"
    },
    "project": {
      "type": "string",
      "pattern": "^[a-z0-9][a-z0-9_-]{0,99}$",
      "description": "project slug, e.g. web"
    },
    "sort": {
      "default": "date",
      "type": "string",
      "enum": [
        "date",
        "new",
        "freq",
        "user"
      ]
    },
    "period": {
      "default": "14d",
      "type": "string",
      "pattern": "^\\d{1,3}[mhdw]$"
    },
    "limit": {
      "default": 25,
      "type": "integer",
      "minimum": 1,
      "maximum": 100
    }
  }
}
get_issueRead only

An issue's details with its latest event: the error, where it happened in your code, and tags. Personal data is left out.

Approval: Uses your workspace and hire approval settings.

Arguments for get_issue
ArgumentTypeDetails
issueRequiredstringthe issue's short id, e.g. WEB-1A, or its number
Full input schema (JSON)
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "object",
  "properties": {
    "issue": {
      "type": "string",
      "minLength": 1,
      "description": "the issue's short id, e.g. WEB-1A, or its number"
    }
  },
  "required": [
    "issue"
  ]
}
resolve_issueRead and write

Mark an issue resolved, now or in the next release.

Approval: Uses your workspace and hire approval settings.

Arguments for resolve_issue
ArgumentTypeDetails
issueRequiredstringthe issue's short id, e.g. WEB-1A, or its number
in_next_releaseOptionalbooleanSee input schema below.Default: false
Full input schema (JSON)
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "object",
  "properties": {
    "issue": {
      "type": "string",
      "minLength": 1,
      "description": "the issue's short id, e.g. WEB-1A, or its number"
    },
    "in_next_release": {
      "default": false,
      "type": "boolean"
    }
  },
  "required": [
    "issue"
  ]
}
ignore_issueRead and write

Archive (ignore) an issue, for a number of minutes or until it gets worse.

Approval: Uses your workspace and hire approval settings.

Arguments for ignore_issue
ArgumentTypeDetails
issueRequiredstringthe issue's short id, e.g. WEB-1A, or its number
minutesOptionalintegerfor how long; leave out to archive until it escalates
Full input schema (JSON)
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "object",
  "properties": {
    "issue": {
      "type": "string",
      "minLength": 1,
      "description": "the issue's short id, e.g. WEB-1A, or its number"
    },
    "minutes": {
      "description": "for how long; leave out to archive until it escalates",
      "type": "integer",
      "minimum": 1,
      "maximum": 525600
    }
  },
  "required": [
    "issue"
  ]
}
reopen_issueRead and write

Mark a resolved or archived issue unresolved again.

Approval: Uses your workspace and hire approval settings.

Arguments for reopen_issue
ArgumentTypeDetails
issueRequiredstringthe issue's short id, e.g. WEB-1A, or its number
Full input schema (JSON)
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "object",
  "properties": {
    "issue": {
      "type": "string",
      "minLength": 1,
      "description": "the issue's short id, e.g. WEB-1A, or its number"
    }
  },
  "required": [
    "issue"
  ]
}
assign_issueRead and write

Assign an issue to someone by email or username, or "none" to unassign.

Approval: Uses your workspace and hire approval settings.

Arguments for assign_issue
ArgumentTypeDetails
issueRequiredstringthe issue's short id, e.g. WEB-1A, or its number
assigneeRequiredstringan email or username, or "none"
Full input schema (JSON)
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "object",
  "properties": {
    "issue": {
      "type": "string",
      "minLength": 1,
      "description": "the issue's short id, e.g. WEB-1A, or its number"
    },
    "assignee": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "description": "an email or username, or \"none\""
    }
  },
  "required": [
    "issue",
    "assignee"
  ]
}
list_releasesRead only

Recent releases, newest first, with how many new issues each brought.

Approval: Uses your workspace and hire approval settings.

Arguments for list_releases
ArgumentTypeDetails
projectOptionalstringproject slug, e.g. web
queryOptionalstringpart of a version
Full input schema (JSON)
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "object",
  "properties": {
    "project": {
      "type": "string",
      "pattern": "^[a-z0-9][a-z0-9_-]{0,99}$",
      "description": "project slug, e.g. web"
    },
    "query": {
      "description": "part of a version",
      "type": "string"
    }
  }
}

Watches and incoming events

  • This integration supports a responsibility that watches for changes. The guide above explains what it checks and how to limit it.
  • No incoming webhook handler is declared for this integration.

Limits and troubleshooting

  • Permission errors: check both the connected account's rights and the hire's resource and read/write limits.
  • Expired or revoked access: reconnect or replace the key on the connection.
  • Rate limits and unavailable services can interrupt work. The hire's timecard records the outcome.
  • The action schema describes accepted inputs. It does not grant additional access or bypass approvals.

Service documentation · Integration source reference

On this page