Conversation
DanDo385
marked this pull request as draft
August 7, 2026 18:23
DanDo385
force-pushed
the
feat/oauth-profile-switching
branch
3 times, most recently
from
August 8, 2026 00:58
9a3db70 to
3e50f17
Compare
DanDo385
marked this pull request as ready for review
August 8, 2026 16:28
DanDo385
force-pushed
the
feat/oauth-profile-switching
branch
from
August 8, 2026 16:38
c68b5fb to
8a85f5c
Compare
13 tasks
Author
|
Superseded by #83278. The replacement is rebased on current main, uses the correct |
14 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What does this PR do?
Fixes a legacy auth-store compatibility crash during
hermes auth remove openai-codex CREDENTIAL_ID.Older stores can represent
suppressed_sources[provider]as a mapping. Removing a registered Codex credential then reached.append()on that mapping and raisedAttributeError. The removal path now normalizes mapping keys into the canonical list form before adding the requested source.Related Issue
No exact duplicate issue or PR found. Related auth-removal work does not cover the legacy mapping-shaped suppression value.
Type of Change
Changes Made
hermes_cli/auth.py: normalize legacy mapping-shaped provider suppression data to a list before source suppression is appended.tests/hermes_cli/test_auth_commands.py: add a regression covering removal of a Codex credential from a legacy auth store, canonical persisted markers, and an empty resulting pool.How to Test
auth.jsonwith a pooledopenai-codexcredential frommanual:device_codeand legacy data such as"suppressed_sources": {"openai-codex": {"legacy": true}}.hermes auth remove openai-codex CREDENTIAL_IDwith that store asHERMES_HOME.suppressed_sources["openai-codex"]as a list containing the legacy key and Codex suppression markers.Checklist
Code
fix(scope):,feat(scope):, etc.)pytest tests/ -qand all tests passDocumentation & Housekeeping
docs/, docstrings) — or N/A: N/A; behavior is a backward-compatibility fix and the helper docstring documents the legacy shape.cli-config.yaml.exampleif I added/changed config keys — or N/A: N/ACONTRIBUTING.mdorAGENTS.mdif I changed architecture or workflows — or N/A: N/Ascripts/check-windows-footguns.py --diff origin/main; its 12 reports are pre-existing calls in the touched test file and the new file read declares UTF-8.Screenshots / Logs
Focused CI-parity tests passed:
Manual CLI proof passed with a temporary
HERMES_HOME:git diff --check origin/main...HEADpassed.Full-suite blocker
The full suite was attempted in a fresh external Python 3.11.15 environment with
.[all,dev]installed, then stopped after confirming two failures that reproduce unchanged on clean upstreammain:tests/agent/test_anthropic_output_field_leak.py: imports stale code from~/.hermes/hermes-agent, which lacksget_process_hermes_home.tests/agent/test_credential_pool_routing.py::TestFailureAttribution::test_unmatched_key_does_not_retry_only_pool_entry: expectsrecovered is False; clean upstreammainreturnsTrue.The full-suite checkbox remains unchecked. This PR is Draft until those unrelated upstream/environment failures have a project-approved disposition.