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
- Configure an interceptor-provided signed profile such as agent-tool-gateway.
- Create a provider from that profile.
- Run openshell provider update NAME --credential KEY with the new value supplied through the environment.
- Observe the interceptor receiving an empty provider type and denying the update.
- 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
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:
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
Environment
Logs