Skip to content

Linear

@openmatter/integration-linear verifies Linear webhook signatures and freshness, uses Linear-Delivery for idempotency, and uses organizationId as credential authority.

import { makeCredentialResolver } from "@openmatter/credentials";
import {
makeLinearHttpEndpoint,
makeLinearIntegration,
} from "@openmatter/integration-linear";
const linear = makeLinearIntegration({
credentials: makeCredentialResolver(({ authority }) =>
vault.linearInstallation(authority),
),
});
const endpoint = makeLinearHttpEndpoint({
signingSecret: env.LINEAR_WEBHOOK_SECRET,
submit: (native) => app.acceptFrom("linear", native),
});
  • Events: issue, comment, project, document, Agent notification/session facts, and a generic observation fallback.
  • Context: issue, cursor-paged comments, project, and document.
  • Effects: issue create/update, issue-comment create/update/delete, project update, and document update.

There is no arbitrary GraphQL Effect. Agent activation, per-issue continuity, proactive sweeps, MCP tools, and OAuth control-plane lifecycle remain explicit Loop or deployment composition.

Provider writes are durable at-least-once. Linear does not expose a universal mutation idempotency key, so a crash between provider success and receipt persistence can repeat a write such as issue or comment creation.

See Linear’s official webhook, GraphQL, and OAuth documentation.