NVIDIA / NVIDIA/OpenShell

Add an async user-consent broker for always-on agents

Open
#1,757 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

state:triage-needed
Dominant language
Rust
Stars
8.7k
Forks
1.3k
Avg merge
2d 11h
Merged PRs (30d)
253

Description

Problem Statement

Always-on agents may need explicit user authorization when the user is not actively in session: new resource consent, step-up authentication, or sensitive action approval. Today the practical choices are fail the task, require an active session, or use an over-privileged service account. None preserve user attribution and isolation simultaneously.

Proposed Design
  1. Expose an async consent request API with principal, resource, scope/action, reason, expiry, and correlation ID.
  2. Initiate CIBA or equivalent provider-specific approval with the identity provider.
  3. Return a pending handle to the agent; never return token material.
  4. Allow the agent to suspend and resume when the handle becomes approved, denied, expired, or failed.
  5. Store approved tokens under the same gateway-side custody, attenuation, and audit rules as other broker-issued credentials.

Acceptance criteria:

  • An agent can request consent, receive a pending handle, suspend, and resume after approval without seeing the resulting token.
  • Approved, denied, expired, and failed consent states are explicit and machine-readable.
  • Consent request, user approval, token acquisition, and downstream token use share correlation IDs.
  • The design composes with gateway/operator approval rather than replacing it.
Alternatives Considered
  • Fail whenever consent is missing: safest, but blocks useful autonomous workflows.
  • Use long-lived service-account access: operationally easy, but undermines user attribution and least privilege.
  • Require active interactive sessions for all user-scoped work: reduces autonomy and creates brittle UX.
Agent Investigation
  • OpenShell has gateway-mediated policy decisions and operator-style approval concepts, but no documented user-scoped async consent broker for IdP-issued tokens.
  • Providers v2 refresh strategies (oauth2_client_credentials, oauth2_refresh_token, google_service_account_jwt, static, external) are all machine-credential or pre-acquired-token shaped; none initiate user consent.
  • CIBA is one relevant standard, but the feature should be an async consent abstraction that can use CIBA or provider-specific step-up mechanisms where supported.

References:

Checklist
  • I've reviewed existing issues and the architecture docs
  • This is a design proposal, not a "please build this" request

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with the existing architecture documentation, OpenShell Providers v2 refresh strategies, and the referenced OIDC CIBA core specification. Define an async consent abstraction and document how pending, approved, denied, expired, and failed states, correlation IDs, token custody, and gateway/operator approval satisfy the acceptance criteria.

Written by the indexing model from the issue text.

Assessment

Tech stack
rust
Domain
authentication, authorization, backend-api-design, security
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Quiet
Clarity
Needs clarification
Newbie friendliness
30/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.