{"repo":"NousResearch/hermes-agent","public_id":"5687","display_label":"Fix getpass mocking in OAuth flow tests","summary":"These items address a problem where getpass reads from stdin during pytest capture in Anthropic OAuth flow tests. The work involves mocking getpass properly and refactoring the test architecture to fix related CI failures.","subsystem":"agent/secret_sources","counts":{"members":3,"open_issues":0,"open_issues_distinct":0,"open_prs":0,"closed_issues":1,"merged_prs":1,"attempt_prs":1},"landed_fix":{"status":"merged_to_main","basis":"structural","pr":5946,"merged_at":"2026-04-08T00:19:07+00:00"},"resolution":{"state":"unresolved","by":null},"freshness":{"state":"stale","last_verified_at":"2026-04-08T00:19:07+00:00","is_stale":true},"grouping":{"backbone":"STRUCTURAL_SPANNING","link_density":0.6666666666666666},"fix_edges":[{"issue_number":5687,"pr_number":5946,"tier":"verified","basis":"superseded_ref","confidence":0.9,"recoverable_from_timeline":false,"pr_merged_at":"2026-04-08T00:19:07+00:00"}],"members":[{"kind":"issue","number":5687,"title":"Anthropic OAuth flow test: getpass reads stdin under pytest capture","url":null,"state":"closed"},{"kind":"pr","number":5691,"title":"fix(test): mock getpass in OAuth flow test","url":null,"state":"closed","close_reason":{"refs":[{"kind":"pr","value":"#5946","number":5946}],"category":"implemented_elsewhere","implication":"superseded"},"merged":false},{"kind":"pr","number":5946,"title":"refactor(tests): re-architect tests + fix CI failures","url":null,"state":"merged","close_reason":{"category":"merged"},"merged":true,"is_fix_pr":true,"fix_tier":"verified","files_changed":[".github/workflows/tests.yml","tests/agent/test_anthropic_adapter.py","tests/agent/test_auxiliary_config_bridge.py","tests/agent/test_context_references.py","tests/agent/test_credential_pool.py","tests/agent/test_credential_pool_routing.py","tests/agent/test_crossloop_client_cache.py","tests/agent/test_display.py","tests/agent/test_insights.py","tests/agent/test_model_metadata_local_ctx.py","tests/cli/__init__.py","tests/cli/test_branch_command.py","tests/cli/test_cli_approval_ui.py","tests/cli/test_cli_background_tui_refresh.py","tests/cli/test_cli_browser_connect.py","tests/cli/test_cli_context_warning.py","tests/cli/test_cli_extension_hooks.py","tests/cli/test_cli_file_drop.py","tests/cli/test_cli_init.py","tests/cli/test_cli_interrupt_subagent.py","tests/cli/test_cli_loading_indicator.py","tests/cli/test_cli_mcp_config_watch.py","tests/cli/test_cli_new_session.py","tests/cli/test_cli_plan_command.py","tests/cli/test_cli_prefix_matching.py","tests/cli/test_cli_preloaded_skills.py","tests/cli/test_cli_provider_resolution.py","tests/cli/test_cli_retry.py","tests/cli/test_cli_save_config_value.py","tests/cli/test_cli_secret_capture.py","tests/cli/test_cli_skin_integration.py","tests/cli/test_cli_status_bar.py","tests/cli/test_cli_tools_command.py","tests/cli/test_personality_none.py","tests/cli/test_quick_commands.py","tests/cli/test_reasoning_command.py","tests/cli/test_resume_display.py","tests/cli/test_surrogate_sanitization.py","tests/cli/test_worktree.py","tests/cli/test_worktree_security.py","tests/cron/test_codex_execution_paths.py","tests/cron/test_file_permissions.py","tests/gateway/test_telegram_approval_buttons.py","tests/gateway/test_telegram_conflict.py","tests/hermes_cli/test_anthropic_oauth_flow.py","tests/hermes_cli/test_anthropic_provider_persistence.py","tests/hermes_cli/test_api_key_providers.py","tests/hermes_cli/test_atomic_json_write.py","tests/hermes_cli/test_atomic_yaml_write.py","tests/hermes_cli/test_auth_codex_provider.py","tests/hermes_cli/test_auth_commands.py","tests/hermes_cli/test_auth_nous_provider.py","tests/hermes_cli/test_codex_models.py","tests/hermes_cli/test_config_env_expansion.py","tests/hermes_cli/test_external_credential_detection.py","tests/hermes_cli/test_gemini_provider.py","tests/hermes_cli/test_model_normalize.py","tests/hermes_cli/test_model_provider_persistence.py","tests/hermes_cli/test_ollama_cloud_auth.py","tests/hermes_cli/test_plugin_cli_registration.py","tests/hermes_cli/test_plugins.py","tests/hermes_cli/test_plugins_cmd.py","tests/hermes_cli/test_runtime_provider_resolution.py","tests/hermes_cli/test_setup_model_selection.py","tests/hermes_cli/test_update_check.py","tests/run_agent/__init__.py","tests/run_agent/test_1630_context_overflow_loop.py","tests/run_agent/test_413_compression.py","tests/run_agent/test_860_dedup.py","tests/run_agent/test_agent_guardrails.py","tests/run_agent/test_agent_loop.py","tests/run_agent/test_agent_loop_tool_calling.py","tests/run_agent/test_agent_loop_vllm.py","tests/run_agent/test_anthropic_error_handling.py","tests/run_agent/test_async_httpx_del_neuter.py","tests/run_agent/test_compression_boundary.py","tests/run_agent/test_compression_persistence.py","tests/run_agent/test_compressor_fallback_update.py","tests/run_agent/test_context_pressure.py","tests/run_agent/test_context_token_tracking.py","tests/run_agent/test_dict_tool_call_args.py","tests/run_agent/test_exit_cleanup_interrupt.py","tests/run_agent/test_fallback_model.py","tests/run_agent/test_flush_memories_codex.py","tests/run_agent/test_interactive_interrupt.py","tests/run_agent/test_interrupt_propagation.py","tests/run_agent/test_large_tool_result.py","tests/run_agent/test_long_context_tier_429.py","tests/run_agent/test_openai_client_lifecycle.py","tests/run_agent/test_percentage_clamp.py","tests/run_agent/test_primary_runtime_restore.py","tests/run_agent/test_provider_fallback.py","tests/run_agent/test_provider_parity.py","tests/run_agent/test_real_interrupt_subagent.py","tests/run_agent/test_redirect_stdout_issue.py","tests/run_agent/test_run_agent.py","tests/run_agent/test_run_agent_codex_responses.py","tests/run_agent/test_session_meta_filtering.py","tests/run_agent/test_session_reset_fix.py","tests/run_agent/test_streaming.py","tests/run_agent/test_strict_api_validation.py","tests/run_agent/test_token_persistence_non_cli.py","tests/run_agent/test_tool_arg_coercion.py","tests/tools/test_code_execution.py","tests/tools/test_managed_browserbase_and_modal.py","tests/tools/test_managed_server_tool_support.py","tests/tools/test_modal_sandbox_fixes.py","tests/tools/test_tool_call_parsers.py","tools/browser_camofox.py","tools/mcp_tool.py"]}],"trust":{"default_tier":"verified","includes_suggested":false}}