IT OPS

Orphaned Cloudflare Access Grant Triage to Linear

Weekly, finds Cloudflare Access grants with no matching active HR record, opens a Linear triage issue per owning team.

CategoryIT Ops
Enginesim
Difficultyintermediate
Triggerschedule
Steps6
Setup~15 min

How it runs

The automated pipeline, trigger to output.

  • TriggerWeekly schedule (Monday 06:00)
  • ActionList Cloudflare Access apps and grantsCloudflareCloudflare
  • ActionResolve grants against active HR roster in PostgresPostgreSQLPostgres
  • LogicFilter to orphaned grants; group by owning team
  • ActionOpen a Linear triage issue per teamLinearLinear
  • OutputRecord issue links in Postgres to dedupe next runPostgreSQLPostgres

What it does

Converts the reconciliation gap into accountable work. After detecting Cloudflare Access grants that don't map to an active employee, it creates a Linear issue for the team that owns each affected app so someone is on the hook to justify or revoke the grant.

When to use it

Use this when flagging orphaned access in chat isn't enough and you need a tracked, assignable remediation task with an owner and due date. Good for organizations running formal quarterly access certifications.

How it works

  1. 1A weekly schedule starts the run.
  2. 2It pulls Cloudflare Access apps and their current grants.
  3. 3It queries the HR Postgres table to resolve each grant to an active employee.
  4. 4A logic step keeps only grants with no active match and groups them by the app's owning team.
  5. 5For each team with orphaned grants, it opens a Linear issue listing the apps, emails, and last-seen dates, assigned to that team's lead.
  6. 6It records the issue links back in Postgres so the next run can skip already-ticketed orphans.

Set it up

What you configure once, before turning it on.

  1. 1
    Connect CloudflareWorkers, Pages, R2, KV — the edge stack.
  2. 2
    Connect PostgresAny Postgres URL — query, write, migrate.
  3. 3
    Connect LinearIssues, projects, cycles, triage.
  4. 4
    Set each agent's modelWe leave models unset so you pick the tier — fast + cheap, or top-quality.
  5. 5
    Tune it to your dataEdit the prompts, filters, and field mappings so it matches how your team works.
  6. 6
    Test, then turn it onRun once against a sample, confirm the output, then enable the trigger.

Run this workflow in your colony.

14-day trial. No DevOps. No Sales call. Provisioned in under a minute.