Oban

PassAudited by ClawScan on May 1, 2026.

Overview

This instruction-only Oban helper is aligned with building Elixir background jobs, but generated workers should be reviewed because they may run on schedules, call webhooks, or change application data.

This appears safe to use as an Oban design/reference skill. Before merging generated code, review any scheduled jobs, webhook delivery workers, cleanup tasks, and import workers for proper validation, scoping, testing, and production safeguards.

Findings (3)

Artifact-based informational review of SKILL.md, metadata, install specs, static scan signals, and capability signals. ClawScan does not execute the skill or run runtime probes.

NoteHigh Confidence
ASI10: Rogue Agents
What this means

Scheduled workers can keep performing cleanup, metrics, email, or reporting tasks without a person triggering each run.

Why it was flagged

The skill explicitly teaches recurring scheduled workers. This is disclosed and central to Oban, but it creates application work that continues running after deployment.

Skill content
{Oban.Plugins.Cron, crontab: [{"0 2 * * *", MyApp.Workers.DailyCleanup}, {"*/5 * * * *", MyApp.Workers.MetricsCollector}]}
Recommendation

Review cron schedules, queues, environment-specific configuration, logging, and monitoring before enabling generated recurring jobs.

What this means

If generated webhook code accepts untrusted URLs or overly sensitive payloads, the application could send data to unintended endpoints.

Why it was flagged

The webhook worker example posts payloads to a URL supplied in job arguments. That is expected for webhook delivery, but destination and payload validation matter if adapted into a real app.

Skill content
%{"url" => url, "event" => event, "payload" => payload} = args ... Req.post(url, json: payload, headers: headers, receive_timeout: 25_000)
Recommendation

Validate subscriber URLs, block internal/private network destinations where appropriate, sign payloads carefully, and avoid placing unnecessary secrets or sensitive data in job arguments.

NoteHigh Confidence
ASI08: Cascading Failures
What this means

A copied cleanup or import worker with the wrong filters could delete, overwrite, or repeatedly change application data.

Why it was flagged

The reference examples include bulk deletion and replacement-style database writes. These are normal background-job patterns, but mistakes can affect many records.

Skill content
from(t in MyApp.Accounts.UserToken, where: t.inserted_at < ^cutoff) |> Repo.delete_all() ... MyApp.Repo.insert_all(MyApp.Items.Item, entries, on_conflict: :replace_all)
Recommendation

Add tests, retention safeguards, tenant scoping, transactions where appropriate, dry-run/logging options for destructive jobs, and manual review before production deployment.