wooden-umbrella-84098
06/01/2026, 1:48 PMX-API-KEY header instead of Bearer, which doesn't work
• integrations are not saving keys to secrets, only to an MCP. Polling automations aren't able to work
◦ https://github.com/OpenHands/agent-canvas/issues/926
• integration modals don't point the user at where to get keys, e.g. Slack doesn't send you to https://api.slack.com/apps/
• clicking a pre-canned integration submits a giant prompt, not a slash command
• pre-canned integrations are referencing prompt instructions like <RUNTIME_SERVICES> which don't exist
The cloud integration is also not great--we might want to consider pulling back or refining:
• If the user isn't already signed up and signed in, we lose the "device connection" flow and they just end up in the SaaS UI
• VSCode is not working in-app (this might be hard to fix)
• Frontend still uses the /download API instead of the static webserver, breaking rendering in the rich file view
• Saving a new LLM from agent-canvas breaks user's settings with
Something went wrong storing settings: 1 validation error for OpenHandsAgentSettings
agent_context
Input should be a valid dictionary or instance of AgentContext [type=model_type, input_value=None, input_type=NoneType]
For further information visit <https://errors.pydantic.dev/2.12/v/model_type>purple-thailand-64770
06/01/2026, 2:28 PMelegant-branch-54423
06/01/2026, 2:50 PMcalm-artist-7206
06/01/2026, 3:00 PMnutritious-balloon-65098
06/01/2026, 3:01 PMhundreds-twilight-32833
06/01/2026, 3:01 PMnutritious-balloon-65098
06/01/2026, 3:09 PMOpenHands/agent-canvas issues and filed missing ones.
Investigation notes:
• I inspected the current code paths in this repo.
• I downloaded and inspected openhands-automation==1.0.0a5 from PyPI, matching config/defaults.json, and confirmed it accepts Authorization: Bearer ... and X-Session-API-Key, not X-API-Key.
• I checked the Cloud device authorization endpoint and confirmed it returns a verification URL with a `user_code`; the filed issue is about preserving that state through unauthenticated sign-in/sign-up.
• I did not make code changes, so there is nothing to commit., with interactive elementshundreds-twilight-32833
06/01/2026, 3:12 PM<https://api.slack.com/apps/>" so no new issue needs to be created .calm-artist-7206
06/01/2026, 3:14 PMnutritious-balloon-65098
06/01/2026, 3:14 PMcalm-artist-7206
06/01/2026, 3:17 PMcalm-artist-7206
06/01/2026, 3:18 PMhundreds-twilight-32833
06/01/2026, 3:20 PMnutritious-balloon-65098
06/01/2026, 3:22 PMOpenHands/software-agent-sdk.
• Verified agent-canvas did not have it.
• Verified OpenHands/OpenHands already had similar duplicate-check logic.
• Checked OpenHands/extensions and confirmed reusable composite actions are the right pattern.
• Created a reusable duplicate-issue checker action in OpenHands/extensions.
• Opened PRs to wire it into:
◦ software-agent-sdk
◦ OpenHands/OpenHands
◦ agent-canvas
Checklist:
• agent-canvas had it.OpenHands/OpenHands had it.OpenHands/extensions.calm-artist-7206
06/01/2026, 3:24 PMnutritious-balloon-65098
06/01/2026, 3:24 PMnutritious-balloon-65098
06/01/2026, 3:29 PMOpenHands/extensions#283.
Current PR:
• https://github.com/OpenHands/extensions/pull/283
• Head SHA: f701ab3471b182e69bb309a984e70a6334effb49
• Draft: no — I marked it ready for review after CI went green.
Fixes pushed:
1. b383a98 — added required plugin manifest and vendor symlinks:
◦ plugins/issue-duplicate-checker/.plugin/plugin.json
◦ .claude-plugin -> .plugin
◦ .codex-plugin -> .plugin
1. f701ab3 — removed an accidental nested .plugin/.plugin symlink.
Verification:
• CI checks on latest SHA: 4/4 passing
◦ test
◦ sync-sdk-skill
◦ validate-claude-code
◦ sync-extensions
• Local verification:
◦ uv run --group test pytest tests/ passed: 286 tests
◦ targeted plugin manifest/vendor symlink tests passed
◦ YAML parsed with PyYAML
◦ JS helper files passed node --check
◦ Python helper scripts passed py_compile
Review/merge status:
• Unresolved review threads: 0
• Merge state: blocked only by required human review (REVIEW_REQUIRED)
• I did not find a PR review or QA bot workflow in OpenHands/extensions, so there is no automated review layer to wait for.calm-artist-7206
06/01/2026, 3:30 PMnutritious-balloon-65098
06/01/2026, 3:30 PMcalm-artist-7206
06/01/2026, 3:33 PMnutritious-balloon-65098
06/01/2026, 4:14 PMall-hands-bot review on OpenHands/extensions#283 and waited through the review cycles.
PR:
• https://github.com/OpenHands/extensions/pull/283
• Current head SHA: 9852592759c9bfd889141b77fffb9fa82525ba09
What happened:
• all-hands-bot posted review-in-progress comments and completed reviews.
• I addressed the actionable findings in follow-up commits:
◦ c267316 — addressed initial review feedback.
◦ 04e96ea — addressed follow-up duplicate-checker feedback.
◦ 9852592 — addressed final actionable feedback.
• I replied to and resolved all review threads.
Current status:
• CI: 4/4 passing
◦ sync-extensions
◦ validate-claude-code
◦ sync-sdk-skill
◦ test
• Unresolved review threads: 0
• Draft: false
• Merge state: blocked only by required human review (REVIEW_REQUIRED)calm-artist-7206
06/01/2026, 4:15 PMnutritious-balloon-65098
06/01/2026, 4:15 PMnutritious-balloon-65098
06/01/2026, 4:27 PMOpenHands/extensions#283.
Current status:
• CI remains green: 4 passed, 0 failed, 0 pending.
• Unresolved review threads: 0.
• Current head SHA: 9852592759c9bfd889141b77fffb9fa82525ba09.
• all-hands-bot is still listed as a requested reviewer.
• I watched for ~10 minutes after the re-request; no new review-in-progress comment or new review appeared. The latest bot review is still the previous completed review on the current SHA from 2026-06-01T16:12:00Z.
No iteration was necessary during this watch window.nutritious-balloon-65098
06/01/2026, 7:33 PMpoll_start_task now normalizes status casing before comparisons.
◦ close_issue_as_duplicate now forwards dry_run instead of hardcoding False.
• Re-requested review.
• Fixed the next round:
◦ Prompt examples now use GITHUB_API_BASE_URL / GITHUB_BASE_URL for GHE compatibility.
◦ Auto-close now skips self-duplicate markers.
◦ README documents that remove-label mode must run from issue_comment.
• Re-requested review.
• Fixed the final actionable observation:
◦ Added dry-run action input.
◦ Wired it through to auto_close_duplicate_issues.py --dry-run.
◦ Documented it in README.
• Re-requested review again.
Current PR state:
• PR: https://github.com/OpenHands/extensions/pull/283
• Head SHA: 0c7ab9ed27b90603e69ee6475b1dc5281162cf52
• CI: 4/4 passing
• Unresolved review threads: 0
• Latest all-hands-bot review says:
◦ “🟢 Good taste”
◦ “✅ Worth merging”
◦ no new blocking issues
• Merge still shows REVIEW_REQUIRED, so it needs human approval/merge, but from CI + bot-review standpoint it’s clean.