{"repo":"NousResearch/hermes-agent","public_id":"38633","display_label":"Cron script stdout encoding fixes for Windows","summary":"These issues and PRs address bugs in cron's `_run_job_script` where subprocess stdout was silently dropped or decoded using the platform default encoding (e.g. cp1252, GBK) instead of UTF-8, particularly on Windows with pythonw.exe. Multiple fix attempts target explicit UTF-8 encoding and reliable stdout capture on non-UTF-8 Windows locales.","subsystem":"cron","counts":{"members":8,"open_issues":0,"open_issues_distinct":0,"open_prs":0,"closed_issues":3,"merged_prs":1,"attempt_prs":4},"landed_fix":{"status":"merged_to_main","basis":"structural","pr":70875},"resolution":{"state":"unresolved","by":null},"freshness":{"state":"verified","last_verified_at":"2026-07-24T18:45:57+00:00","is_stale":false},"grouping":{"backbone":"STRUCTURAL_SPANNING","link_density":0.3471428571428571},"fix_edges":[{"issue_number":38633,"pr_number":70875,"tier":"verified","basis":"superseded_ref","confidence":0.9,"recoverable_from_timeline":false},{"issue_number":39029,"pr_number":70875,"tier":"verified","basis":"superseded_ref","confidence":0.9,"recoverable_from_timeline":false},{"issue_number":42384,"pr_number":70875,"tier":"verified","basis":"superseded_ref","confidence":0.9,"recoverable_from_timeline":false},{"issue_number":42785,"pr_number":70875,"tier":"verified","basis":"superseded_ref","confidence":0.9,"recoverable_from_timeline":false},{"issue_number":47939,"pr_number":70875,"tier":"verified","basis":"closing_ref","confidence":0.95,"recoverable_from_timeline":true},{"issue_number":53428,"pr_number":70875,"tier":"verified","basis":"closing_ref","confidence":0.95,"recoverable_from_timeline":true},{"issue_number":60760,"pr_number":70875,"tier":"verified","basis":"superseded_ref","confidence":0.9,"recoverable_from_timeline":false}],"members":[{"kind":"issue","number":38633,"title":"Windows: Two bugs in cron `_run_job_script` — pythonw.exe loses stdout + GBK encoding crash","url":null,"state":"closed"},{"kind":"issue","number":42384,"title":"`no_agent` cron script stdout silently dropped on Windows (pythonw gateway) when output contains emoji / multi-byte UTF-8","url":null,"state":"closed"},{"kind":"issue","number":42785,"title":"cron no_agent script stdout decoded with platform default (cp1252 on Windows), mangling non-ASCII output before delivery","url":null,"state":"closed"},{"kind":"pr","number":38666,"title":"fix(cron): make _run_job_script work on Windows pythonw.exe + non-UTF-8 locales","url":null,"state":"closed","close_reason":{"category":"silent_close","implication":"active"},"merged":false},{"kind":"pr","number":42390,"title":"fix(cron): add explicit utf-8 encoding for subprocess stdout capture","url":null,"state":"closed","close_reason":{"category":"uncategorized","implication":"needs_llm"},"merged":false,"is_fix_pr":true,"fix_tier":"suggested","fix_detail_withheld":true},{"kind":"pr","number":42805,"title":"fix(cron): decode no-agent script output as UTF-8","url":null,"state":"closed","close_reason":{"refs":[{"kind":"commit","value":"7498eae3f7","number":0}],"category":"superseded_by_pr","implication":"superseded"},"merged":false},{"kind":"pr","number":43857,"title":"fix(cron): explicit UTF-8 encoding for script stdout capture","url":null,"state":"closed","close_reason":{"refs":[{"kind":"pr","value":"#70875","number":70875}],"category":"implemented_elsewhere","implication":"superseded"},"merged":false},{"kind":"pr","number":70875,"title":"fix(windows): close out the text-mode subprocess decode bug class — salvage #55339/#60741/#60751 + full sweep + linter","url":null,"state":"merged","close_reason":{"category":"merged","implication":"superseded"},"merged":true,"is_fix_pr":true,"fix_tier":"verified","files_changed":["agent/anthropic_adapter.py","agent/context_references.py","agent/copilot_acp_client.py","agent/lsp/install.py","agent/proxy_sources/iron_proxy.py","agent/secret_sources/base.py","agent/secret_sources/bitwarden.py","agent/shell_hooks.py","agent/skill_preprocessing.py","agent/trace_upload.py","agent/transports/codex_app_server.py","batch_runner.py","cli.py","contributors/emails/[redacted:email]","contributors/emails/[redacted:email]","gateway/platforms/base.py","gateway/platforms/webhook.py","gateway/platforms/webhook_filters.py","gateway/run.py","gateway/shutdown_forensics.py","gateway/status.py","hermes_cli/_early_recovery.py","hermes_cli/claw.py","hermes_cli/clipboard.py","hermes_cli/copilot_auth.py","hermes_cli/doctor.py","hermes_cli/dump.py","hermes_cli/gateway.py","hermes_cli/kanban_db.py","hermes_cli/main.py","hermes_cli/managed_uv.py","hermes_cli/onepassword_secrets_cli.py","hermes_cli/plugins_cmd.py","hermes_cli/profiles.py","hermes_cli/secrets_cli.py","hermes_cli/service_manager.py","hermes_cli/setup.py","hermes_cli/tools_config.py","hermes_cli/uninstall.py","hermes_cli/web_git.py","hermes_cli/windows_ssh_runtime.py","optional-skills/creative/kanban-video-orchestrator/scripts/monitor.py","plugins/google_meet/audio_bridge.py","plugins/google_meet/cli.py","plugins/google_meet/meet_bot.py","plugins/memory/byterover/__init__.py","plugins/memory/honcho/client.py","plugins/memory/mem0/_setup.py","plugins/platforms/photon/adapter.py","plugins/platforms/telegram/adapter.py","plugins/platforms/whatsapp/adapter.py","plugins/web/ddgs/provider.py","scripts/check-windows-footguns.py","scripts/ci/lockfile_diff.py","scripts/ci/publish_e2e_evidence.py","scripts/contributor_audit.py","scripts/iso-certify.py","scripts/profile-tui.py","scripts/release.py","scripts/run_tests_parallel.py","skills/creative/comfyui/scripts/auto_fix_deps.py","skills/creative/comfyui/scripts/hardware_check.py","skills/productivity/docx/scripts/accept_changes.py","skills/productivity/docx/scripts/office/validators/redlining.py","skills/productivity/google-workspace/scripts/google_api.py","skills/productivity/powerpoint/scripts/office/validators/redlining.py","skills/productivity/powerpoint/scripts/thumbnail.py","skills/productivity/xlsx/scripts/recalc.py","tests/gateway/test_status.py","tests/gateway/test_webhook_integration.py","tests/gateway/test_whatsapp_connect.py","tests/hermes_cli/test_update_autostash.py","tests/scripts/test_footgun_subprocess_encoding.py","tests/test_windows_subprocess_no_window_flags.py","tests/tools/test_docker_environment.py","tests/tools/test_subprocess_utf8_encoding.py","tools/browser_tool.py","tools/checkpoint_manager.py","tools/computer_use/cua_backend.py","tools/computer_use/permissions.py","tools/environments/base.py","tools/environments/docker.py","tools/environments/local.py","tools/environments/singularity.py","tools/environments/ssh.py","tools/lazy_deps.py","tools/process_registry.py","tools/skills_hub.py","tools/tirith_security.py","tools/transcription_tools.py","tools/tts_tool.py","tools/voice_mode.py"]}],"trust":{"default_tier":"verified","includes_suggested":false}}