The dangerous sentence in agent software is "it can do this automatically". The missing half is: on whose authority? Quell derives a trust level for every submission and uses it to decide what waits for a human and what may move automatically.
The five trust levels
Each feedback submission carries a derived trust level that reflects how it was submitted and who submitted it:
- public — widget submission with no authenticated session. Lowest trust; everything is human-reviewed.
- identified — widget submission with user identity supplied by the host application. Useful context, but still human-reviewed by default.
- patchboard_reporter — widget submission from a signed-in Quell user. Elevated because Quell issued the reporter token.
- agent — submission via an API key carrying the feedback:write scope. Structured, machine-generated; trusted for immediate routing.
- admin — submission via an API key carrying admin:all scope. Full trust; bypasses all holds.
How routing decisions work
When a feedback item reaches the server, feedback-trust.ts derives the trust level from the session, the API key scope, and the origin headers. The trust level is stored on the item and used in two places:
- Integration routing: whether a GitHub or Linear issue gets created immediately (agent/admin/reporter when opted in) or queued for human review (public/identified).
- Inbox display: the trust badge shown beside each item in the admin UI — a fast visual signal for the human reviewer.
The routing logic is explicit and transparent. There is no hidden AI triage step that reclassifies items after the fact. The trust level is computed once at submission time and never silently changed.
Agent submissions
When Claude Code submits a vent (agent self-feedback via quell vent), the submission carries an API key scoped to feedback:write. The trust level becomes agent. The item can auto-create a GitHub issue without human sign-off because the agent is a trusted principal in the project's key registry.
# trust: agent → auto-routes to GitHub → issue #412 opened · PR review required
The PR is review-required by default, regardless of the feedback trust level. Auto-creating an issue and auto-merging code are separate permissions. Teams can configure a narrow auto-merge policy later without pretending that trusted input makes every proposed change safe.
Public submissions
A public submission — from a user with no authenticated session — enters the inbox tagged public. It does not auto-create an issue. A human reviewer sees it, decides whether it warrants action, and can upgrade its priority or open an issue manually. The trust level prevents noise from flooding your issue tracker.
This is the guardrail. You can give your agent a feedback:read key and let it scan public submissions without any risk of it auto-routing unvetted noise to your GitHub project.
The guardrail that enables automation
The five levels exist precisely so you can automate the high-confidence path (agent, admin) without opening the gate to the noisy path (public). Most teams land on a simple policy: agent-submitted items auto-route, public items queue for human triage, and signed-in reporters can be opted into auto-routing once the team trusts that flow.
The trust model does not make the agent cleverer. It makes the consequences of acting on its input legible and controllable. Projects can choose routing policies, but a submission cannot simply announce that it deserves more authority.