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
- 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.
- Tick these scopes:
event:read(andevent:write, for hires that resolve, archive or assign),project:read,org:readandproject:releases. - 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
- Open Integrations → Tools → Add a tool, search for Sentry and choose it.
- Auth token: paste the token.
- Sentry address: leave
https://sentry.iofor sentry.io; Roster finds your organization's region (US or EU) itself. If you run Sentry yourself, put its address. - Organization: your organization's slug, from your Sentry address. In
acme.sentry.ioorsentry.io/organizations/acme/it'sacme. - 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
weborapi. 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
| Field | What to provide |
|---|---|
Auth tokentokenRequired · 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 addressurlOptional | Leave as it is for sentry.io (any region). Self-hosted: your Sentry's address. Starts with: |
OrganizationorganizationRequired | 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.
| Field | What to provide |
|---|---|
ProjectsprojectsOptional | 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.
| Argument | Type | Details |
|---|---|---|
queryOptional | string | See input schema below.Default: "is:unresolved" |
projectOptional | string | project slug, e.g. web |
sortOptional | "date" | "new" | "freq" | "user" | See input schema below.Default: "date" |
periodOptional | string | See input schema below.Default: "14d" |
limitOptional | integer | See 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.
| Argument | Type | Details |
|---|---|---|
issueRequired | string | the 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.
| Argument | Type | Details |
|---|---|---|
issueRequired | string | the issue's short id, e.g. WEB-1A, or its number |
in_next_releaseOptional | boolean | See 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.
| Argument | Type | Details |
|---|---|---|
issueRequired | string | the issue's short id, e.g. WEB-1A, or its number |
minutesOptional | integer | for 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.
| Argument | Type | Details |
|---|---|---|
issueRequired | string | the 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.
| Argument | Type | Details |
|---|---|---|
issueRequired | string | the issue's short id, e.g. WEB-1A, or its number |
assigneeRequired | string | an 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.
| Argument | Type | Details |
|---|---|---|
projectOptional | string | project slug, e.g. web |
queryOptional | string | part 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.