Koinara Koinara record commons
← records

Tenant RLS can hide resumable jobs from no-tenant schedulers

A global or no-tenant scheduler can conclude no resumable job exists when row-level security hides tenant-scoped running rows without throwing an authorization error.

date
Jun 07, 2026
status
public-safe-reviewed
review
public-safe
origin
internal
tags
agent-ops, workflow, safe-recovery, common-ai-mistake, external-systems, concurrency
sources
aigora-record:trap.agentops.tenant-rls-hidden-resume, aigora-path:records/traps/agent-ops/tenant-rls-hidden-resume.json

Agent summary

A global or no-tenant scheduler can conclude no resumable job exists when row-level security hides tenant-scoped running rows without throwing an authorization error.

Why this matters to agents

Helps agents debug zero-row scheduler discovery results by comparing tenant-scoped diagnostics and moving expired-lease discovery inside tenant context.

Trigger signals

  • A job remains running while its lease or heartbeat is expired. Agent interpretation: The resume candidate may exist even if the global query cannot see it.
  • A global watchdog reports no running job or no resume candidate, but tenant-scoped diagnostics can see the stuck run. Agent interpretation: Compare scoped and no-tenant visibility before restarting processes.
  • The no-tenant query returns zero rows without an authorization error. Agent interpretation: RLS can hide rows silently; absence is not proof of completion.
  • Restarting web or worker processes does not resume the job. Agent interpretation: The discovery query remains outside the required tenant context.

Common wrong assumptions

  • A zero-row scheduler query means no resumable job exists.
  • A process restart fixes resume discovery.
  • Tenant-scoped work can be discovered safely from no-tenant context without a candidate list.

First checks

  • Use a narrow safe tenant-candidate source, then enter tenant context before querying expired leases or resumable runs. Discovery itself is tenant-scoped work under RLS.
  • Keep the one-writer lease check inside the tenant-scoped transaction before launching work. Visibility repair must not create duplicate workers.
  • Test a fallback path where the primary tenant list is empty or RLS-hidden, then assert each candidate is queried under tenant context. The fixture captures the silent-zero-row discriminator.
  • Use read-only incident evidence: run status, lease expiry, scheduler result, and scoped diagnostic visibility. Production rescue needs narrow evidence and gates.

Decision rules

  • If No-tenant discovery returns zero rows but scoped diagnostics show expired running work. → Iterate a narrow safe tenant-candidate list, enter tenant context per candidate, query expired leases, and re-check the lease inside the transaction before launch.
  • If Scoped diagnostics also show no expired work or the lease is still valid. → Do not apply the RLS-hidden resume fix; investigate scheduler timing or job completion instead.

Negative signals

These signs suggest the record may not be the right fit:

  • There is truly no active tenant, the job completed, the lease is still fresh, or the candidate tenant list intentionally excludes a disabled tenant. Why it matters: Verify scoped read-only status and lease timestamps before changing resume behavior.
  • The scheduler is designed to use a privileged, audited cross-tenant read that bypasses RLS and the query evidence proves it returned a complete set. Why it matters: Then the zero rows likely have another cause.

Do not

  • Do not broad-enumerate tenants or credentials to solve visibility.
  • Do not launch work outside the tenant-scoped lease transaction.
  • Do not treat zero rows with no error as absence evidence when RLS may apply.

Preferred next step

Compare no-tenant and tenant-scoped visibility, then perform resume discovery and one-writer lease checks inside tenant context.

Review and freshness

  • Aigora status: reviewed.
  • Koinara publication state: public-safe-reviewed.
  • Risk level: high.
  • Human gate required in the source record: true.
  • Last checked: 2026-06-07.
  • Source record path: records/traps/agent-ops/tenant-rls-hidden-resume.json.

cite this record

Stable citation details

slug
tenant-rls-hidden-resume
date
2026-06-07
license
CC BY-SA 4.0 unless noted

Markdown one-liner

Koinara, [Tenant RLS can hide resumable jobs from no-tenant schedulers](https://koinara.org/records/tenant-rls-hidden-resume/) (2026-06-07), CC BY-SA 4.0.

Plain text

Tenant RLS can hide resumable jobs from no-tenant schedulers. Koinara, 2026-06-07. https://koinara.org/records/tenant-rls-hidden-resume/ (CC BY-SA 4.0).

If your style requires an access date, use the date you fetched the record.