Skip to content

bug: provider update omits the existing provider type #2991

Description

@slopp

Agent Diagnostic

The agent inspected OpenShell main at ca61ee37440995d1ca17cb081f09c4743609cfff and reproduced the behavior against OpenShell 0.0.109 with an APF interceptor-backed provider profile.

provider_update fetches the existing provider only for --from-existing or --from-oidc-token, but always constructs UpdateProviderRequest.provider with:

r#type: String::new(),
profile_workspace: String::new(),

The APF interceptor evaluates the request before the gateway merges it with stored state. It therefore cannot prove that the target is an APF-managed provider profile and denies a credential-only update. Initial provider creation succeeds; rotation fails.

Skills/instructions consulted: repository AGENTS.md, CONTRIBUTING.md, and .agents/skills/create-github-issue/SKILL.md.

Description

Actual behavior: openshell provider update NAME --credential ... sends an empty provider type and profile workspace. Policy interceptors that authorize mutations by provider profile reject the update.

Expected behavior: a credential-only update preserves the stored provider type and profile workspace in UpdateProviderRequest, allowing interceptors to authorize the same managed target without trusting caller-supplied replacement metadata.

Reproduction Steps

  1. Configure an interceptor-provided signed profile such as agent-tool-gateway.
  2. Create a provider from that profile.
  3. Run openshell provider update NAME --credential KEY with the new value supplied through the environment.
  4. Observe the interceptor receiving an empty provider type and denying the update.
  5. Inspect crates/openshell-cli/src/run.rs::provider_update; the request initializes r#type and profile_workspace to empty strings.

Environment

  • OS: Ubuntu on Omnistation
  • Docker: OpenShell Docker driver
  • OpenShell: reproduced on 0.0.109; source behavior confirmed on main ca61ee37
  • Policy interceptor: APF signed provider profile source

Logs

UpdateProviderRequest provider.type = ""
APF cannot prove that the update target is bundle-managed; update denied

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions