Skip to content

Surface resolved secrets backend context in credential-bearing init flows #349

@rianjs

Description

@rianjs

Problem

cr init currently has a top-level secrets-management workflow for reusable credential-store definitions, and separate profile/reviewer/LLM flows that declare credential refs. Users can configure a reviewer entity without seeing enough context about where the secrets will be stored, especially when a named 1Password backend is involved.

We should keep the reusable secrets-management concept, but credential-bearing flows need to show the resolved destination inline so users do not have to mentally connect several screens.

Related: #291, #317, #347, #348.

Desired behavior

Whenever an init flow creates or edits a credential-bearing thing, show a non-secret destination summary:

  • credential ref / storage label
  • resolved secrets-management profile, if one applies
  • resolved backend display label, such as macOS Keychain, encrypted file, 1Password desktop app, 1Password service account, or 1Password Connect
  • for 1Password profiles, non-secret routing details such as vault name/id, item title prefix, item tag, and item field title when configured

The flow should not collect or display backend access tokens. 1Password service/Connect tokens remain environment-variable references configured in the secrets-management profile.

Acceptance criteria

  • Reviewer entity credential steps show the resolved destination for PAT and GitHub App reviewer credentials.
  • LLM API-key and Git credential collection screens retain or gain equivalent destination summaries where they use the shared credential collector.
  • Named 1Password profiles show useful non-secret context: vault, backend kind, and item naming/tag/field settings when configured.
  • Default/legacy OS backend paths show platform-specific copy, e.g. Automatic OS default (macOS Keychain) on macOS.
  • The top-level Configure secrets management menu remains available for creating/editing reusable backends.
  • Credential-bearing flows provide clear copy for users who need to change the destination: configure/select a secrets-management profile rather than editing secret values.

Design note

Do not remove the top-level secrets-management menu in this ticket. Secrets-management profiles are reusable non-secret infrastructure and are not owned by any single reviewer entity. This ticket is about making the resolved destination visible from the places where users configure credential-bearing identities/runtimes.

Empirical verification

Use tmux to drive cr init in a real PTY.

Required captures:

  • Reviewer GitHub App setup with default backend shows the reviewer secret destination inline.
  • Reviewer PAT setup with a named 1Password secrets-management profile shows the profile/backend/vault context without any secret value.
  • A 1Password profile configured with item tag/field/title prefix displays those non-secret labels in the destination summary.
  • The main menu still exposes Configure secrets management.
  • No screen suggests that the top-level secrets-management profile itself is the GitHub App ID/private key.

Metadata

Metadata

Assignees

No one assigned

    Labels

    area:surfaceUser-visible command surface and lifecycle commandsenhancementNew feature or request

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions