Skip to content

Release v1.44.0 - #4684

Merged
hieptl merged 1 commit into
mainfrom
rel-1.44.0
Aug 27, 2026
Merged

Release v1.44.0#4684
hieptl merged 1 commit into
mainfrom
rel-1.44.0

Conversation

@all-hands-bot

@all-hands-bot all-hands-bot commented Aug 27, 2026

Copy link
Copy Markdown
Collaborator

Release v1.44.0

This PR prepares the release for version 1.44.0.

Started by: @hieptl

Release Checklist

  • Version set to 1.44.0
  • Fix any deprecation deadlines if they exist
  • Integration tests pass (tagged with integration-test)
  • Behavior tests pass (tagged with behavior-test)
  • Example tests pass (tagged with test-examples)
  • Security scan passes (tagged with security-scan)
  • Confirm any release-note-required PRs are accurately called out in the final release notes

What happens on merge

When this PR is merged, the create-release.yml workflow will automatically:

  1. Create a GitHub release with tag v1.44.0 and auto-generated notes, plus an explicit preamble for merged release-note-required PRs
  2. Trigger pypi-release.yml to publish all packages to PyPI
  3. Trigger version-bump-prs.yml to create downstream version bump PRs

🐳 Agent Server images for this PR — GHCR package, pull/run commands, and all pushed tags (click to expand)

GHCR package: https://github.com/OpenHands/agent-sdk/pkgs/container/agent-server

Variants & Base Images

Variant Architectures Base Image Docs / Tags
java amd64, arm64 eclipse-temurin:17-jdk Link
python amd64, arm64 nikolaik/python-nodejs:python3.13-nodejs22-slim Link
golang amd64, arm64 golang:1.21-bookworm Link

Pull (multi-arch manifest)

# Each variant is a multi-arch manifest supporting both amd64 and arm64
docker pull ghcr.io/openhands/agent-server:bef8f59-python

Run

docker run -it --rm \
  -p 8000:8000 \
  --name agent-server-bef8f59-python \
  ghcr.io/openhands/agent-server:bef8f59-python

All tags pushed for this build

ghcr.io/openhands/agent-server:bef8f59-golang-amd64
ghcr.io/openhands/agent-server:bef8f5974566438e0c00f2771172d16c32b4c6e1-golang-amd64
ghcr.io/openhands/agent-server:rel-1.44.0-golang-amd64
ghcr.io/openhands/agent-server:bef8f59-golang_tag_1.21-bookworm-amd64
ghcr.io/openhands/agent-server:bef8f59-golang-arm64
ghcr.io/openhands/agent-server:bef8f5974566438e0c00f2771172d16c32b4c6e1-golang-arm64
ghcr.io/openhands/agent-server:rel-1.44.0-golang-arm64
ghcr.io/openhands/agent-server:bef8f59-golang_tag_1.21-bookworm-arm64
ghcr.io/openhands/agent-server:bef8f59-java-amd64
ghcr.io/openhands/agent-server:bef8f5974566438e0c00f2771172d16c32b4c6e1-java-amd64
ghcr.io/openhands/agent-server:rel-1.44.0-java-amd64
ghcr.io/openhands/agent-server:bef8f59-eclipse-temurin_tag_17-jdk-amd64
ghcr.io/openhands/agent-server:bef8f59-java-arm64
ghcr.io/openhands/agent-server:bef8f5974566438e0c00f2771172d16c32b4c6e1-java-arm64
ghcr.io/openhands/agent-server:rel-1.44.0-java-arm64
ghcr.io/openhands/agent-server:bef8f59-eclipse-temurin_tag_17-jdk-arm64
ghcr.io/openhands/agent-server:bef8f59-python-amd64
ghcr.io/openhands/agent-server:bef8f5974566438e0c00f2771172d16c32b4c6e1-python-amd64
ghcr.io/openhands/agent-server:rel-1.44.0-python-amd64
ghcr.io/openhands/agent-server:bef8f59-nikolaik_s_python-nodejs_tag_python3.13-nodejs22-slim-amd64
ghcr.io/openhands/agent-server:bef8f59-python-arm64
ghcr.io/openhands/agent-server:bef8f5974566438e0c00f2771172d16c32b4c6e1-python-arm64
ghcr.io/openhands/agent-server:rel-1.44.0-python-arm64
ghcr.io/openhands/agent-server:bef8f59-nikolaik_s_python-nodejs_tag_python3.13-nodejs22-slim-arm64
ghcr.io/openhands/agent-server:bef8f59-golang
ghcr.io/openhands/agent-server:bef8f5974566438e0c00f2771172d16c32b4c6e1-golang
ghcr.io/openhands/agent-server:rel-1.44.0-golang
ghcr.io/openhands/agent-server:bef8f59-golang_tag_1.21-bookworm
ghcr.io/openhands/agent-server:bef8f59-java
ghcr.io/openhands/agent-server:bef8f5974566438e0c00f2771172d16c32b4c6e1-java
ghcr.io/openhands/agent-server:rel-1.44.0-java
ghcr.io/openhands/agent-server:bef8f59-eclipse-temurin_tag_17-jdk
ghcr.io/openhands/agent-server:bef8f59-python
ghcr.io/openhands/agent-server:bef8f5974566438e0c00f2771172d16c32b4c6e1-python
ghcr.io/openhands/agent-server:rel-1.44.0-python
ghcr.io/openhands/agent-server:bef8f59-nikolaik_s_python-nodejs_tag_python3.13-nodejs22-slim

About Multi-Architecture Support

  • Each variant tag (e.g., bef8f59-python) is a multi-arch manifest supporting both amd64 and arm64
  • Docker automatically pulls the correct architecture for your platform
  • Individual architecture tags (e.g., bef8f59-python-amd64) are also available if needed

Co-authored-by: openhands <openhands@all-hands.dev>
@all-hands-bot all-hands-bot added integration-test Runs the integration tests and comments the results test-examples Run all applicable "examples/" files. Expensive operation. behavior-test security-scan Run the release security scan (approval-drift + supply-chain) on this PR labels Aug 27, 2026
@github-actions

Copy link
Copy Markdown
Contributor

Hi! I started running the behavior tests on your PR. You will receive a comment with the results shortly.

@github-actions

Copy link
Copy Markdown
Contributor

Hi! I started running the integration tests on your PR. You will receive a comment with the results shortly.

@github-actions

Copy link
Copy Markdown
Contributor

🔒 Release Security Scan

🔒 Approval drift (time-of-check vs time-of-use)

❌ 5 finding(s)

Baseline: v1.43.1 — 18 merged PR(s) in range.

⚠️ 1 first-parent commit(s) in range did not match the (#N) squash convention and were not audited (a merge/rebase merge, or a lost (#N) suffix). These are a blind spot — inspect them:

  • Release v1.44.0
PR finding detail
#3673 changed-after-approval last approval by @all-hands-bot was on a66c2a5, but merged head was 5a094a6c5 — commits landed after review
#4517 changed-after-approval last approval by @enyst was on ca146b8, but merged head was 871b3e08d — commits landed after review
#4612 changed-after-approval last approval by @VascoSch92 was on ecd18b3, but merged head was dd9d565e4 — commits landed after review
#4602 changed-after-approval last approval by @all-hands-bot was on 49674ae, but merged head was 907ac4b28 — commits landed after review
#4587 changed-after-approval last approval by @all-hands-bot was on f0595e5, but merged head was 67a3b4798 — commits landed after review

Audited 18 PR(s): 13 clean, 5 flagged, 0 un-auditable.

📦 Supply-chain dependency diff

✅ no findings

Baseline: v1.43.1
Added: 0, bumped: 2, removed: 0.
(plus 4 internal openhands-* bump(s))

OSV: no known vulns across 6 new/bumped dep(s).

Bumped dependencies
  • httplib2: 0.31.0 → 0.32.0
  • pyasn1: 0.6.3 → 0.6.4
Internal `openhands-*` bumps
  • openhands-agent-server: 1.43.1 → 1.44.0
  • openhands-sdk: 1.43.1 → 1.44.0
  • openhands-tools: 1.43.1 → 1.44.0
  • openhands-workspace: 1.43.1 → 1.44.0

Deterministic scanners: approval-drift + supply-chain dependency diff. Read-only; no PR code executed.

@github-actions

Copy link
Copy Markdown
Contributor

Python API breakage checks — ✅ PASSED

Result:PASSED

Action log

@github-actions

Copy link
Copy Markdown
Contributor

REST API breakage checks (OpenAPI) — ✅ PASSED

Result:PASSED

Action log

@github-actions

Copy link
Copy Markdown
Contributor

🧪 Integration Tests Results

Overall Success Rate: 97.7%
Total Cost: $1.81
Models Tested: 5
Timestamp: 2026-08-27 13:04:48 UTC

📁 Detailed Logs & Artifacts

Click the links below to access detailed agent/LLM logs showing the complete reasoning process for each model. On the GitHub Actions page, scroll down to the 'Artifacts' section to download the logs.

📊 Summary

Model Overall Tests Passed Skipped Total Cost Tokens
litellm_proxy_deepseek_deepseek_v4_flash 100.0% 8/8 1 9 $0.02 400,182
litellm_proxy_anthropic_claude_sonnet_4_6 88.9% 8/9 0 9 $0.55 382,449
litellm_proxy_gemini_3.1_pro_preview 100.0% 9/9 0 9 $0.46 315,348
litellm_proxy_openai_gpt_5.5 100.0% 9/9 0 9 $0.78 264,609
litellm_proxy_minimax_MiniMax_M2.7 100.0% 8/8 1 9 $0.00 328,810

📋 Detailed Results

litellm_proxy_deepseek_deepseek_v4_flash

  • Success Rate: 100.0% (8/8)
  • Total Cost: $0.02
  • Token Usage: prompt: 395,308, completion: 4,874, cache_read: 267,520, reasoning: 1,239
  • Run Suffix: litellm_proxy_deepseek_deepseek_v4_flash_bef8f59_deepseek_v4_flash_run_N9_20260827_130200
  • Skipped Tests: 1

Skipped Tests:

  • t08_image_file_viewing: This test requires a vision-capable LLM model. Please use a model that supports image input.

litellm_proxy_anthropic_claude_sonnet_4_6

  • Success Rate: 88.9% (8/9)
  • Total Cost: $0.55
  • Token Usage: prompt: 377,215, completion: 5,234, cache_read: 273,340, cache_write: 103,820, reasoning: 285
  • Run Suffix: litellm_proxy_anthropic_claude_sonnet_4_6_bef8f59_claude_sonnet_4_6_run_N9_20260827_130158

Failed Tests:

  • t02_add_bash_hello: Shell script is not executable (Cost: $0.06)

litellm_proxy_gemini_3.1_pro_preview

  • Success Rate: 100.0% (9/9)
  • Total Cost: $0.46
  • Token Usage: prompt: 310,792, completion: 4,556, cache_read: 118,716, reasoning: 2,757
  • Run Suffix: litellm_proxy_gemini_3.1_pro_preview_bef8f59_gemini_3_1_pro_run_N9_20260827_130202

litellm_proxy_openai_gpt_5.5

  • Success Rate: 100.0% (9/9)
  • Total Cost: $0.78
  • Token Usage: prompt: 260,167, completion: 4,442, cache_read: 145,920, reasoning: 1,368
  • Run Suffix: litellm_proxy_openai_gpt_5.5_bef8f59_gpt_5_5_run_N9_20260827_130201

litellm_proxy_minimax_MiniMax_M2.7

  • Success Rate: 100.0% (8/8)
  • Total Cost: $0.00
  • Token Usage: prompt: 324,209, completion: 4,601, cache_read: 243,567
  • Run Suffix: litellm_proxy_minimax_MiniMax_M2.7_bef8f59_minimax_m2_7_run_N9_20260827_130220
  • Skipped Tests: 1

Skipped Tests:

  • t08_image_file_viewing: This test requires a vision-capable LLM model. Please use a model that supports image input.

@github-actions

Copy link
Copy Markdown
Contributor

Coverage

Coverage Report •
FileStmtsMissCoverMissing
TOTAL42413776882% 
report-only-changed-files is enabled. No files were changed during this commit :)

@github-actions

github-actions Bot commented Aug 27, 2026

Copy link
Copy Markdown
Contributor

🔄 Running Examples with openhands/claude-haiku-4-5-20251001

Generated: 2026-08-27 13:30:17 UTC

Example Status Duration Cost
01_standalone_sdk/02_custom_tools.py ✅ PASS 25.5s $0.03
01_standalone_sdk/03_activate_skill.py ✅ PASS 21.9s $0.03
01_standalone_sdk/05_use_llm_registry.py ✅ PASS 11.2s $0.01
01_standalone_sdk/07_mcp_integration.py ✅ PASS 35.2s $0.02
01_standalone_sdk/09_pause_example.py ✅ PASS 15.7s $0.02
01_standalone_sdk/10_persistence.py ✅ PASS 33.3s $0.03
01_standalone_sdk/11_async.py ✅ PASS 29.6s $0.03
01_standalone_sdk/12_custom_secrets.py ✅ PASS 13.6s $0.01
01_standalone_sdk/13_get_llm_metrics.py ✅ PASS 27.3s $0.04
01_standalone_sdk/14_context_condenser.py ✅ PASS 2m 39s $0.16
01_standalone_sdk/17_image_input.py ✅ PASS 20.9s $0.02
01_standalone_sdk/18_send_message_while_processing.py ✅ PASS 22.8s $0.02
01_standalone_sdk/19_llm_routing.py ✅ PASS 17.2s $0.02
01_standalone_sdk/20_stuck_detector.py ✅ PASS 14.9s $0.02
01_standalone_sdk/21_generate_extraneous_conversation_costs.py ✅ PASS 12.4s $0.00
01_standalone_sdk/22_anthropic_thinking.py ✅ PASS 15.0s $0.01
01_standalone_sdk/23_responses_reasoning.py ✅ PASS 59.6s $0.01
01_standalone_sdk/24_planning_agent_workflow.py ✅ PASS 3m 43s $0.30
01_standalone_sdk/25_agent_delegation.py ✅ PASS 1m 7s $0.07
01_standalone_sdk/26_custom_visualizer.py ✅ PASS 18.9s $0.02
01_standalone_sdk/28_ask_agent_example.py ✅ PASS 34.3s $0.04
01_standalone_sdk/29_llm_streaming.py ✅ PASS 45.3s $0.03
01_standalone_sdk/30_tom_agent.py ✅ PASS 12.9s $0.02
01_standalone_sdk/31_iterative_refinement.py ✅ PASS 1m 34s $0.09
01_standalone_sdk/32_configurable_security_policy.py ✅ PASS 23.1s $0.02
01_standalone_sdk/33_hooks/main.py ✅ PASS 42.0s $0.04
01_standalone_sdk/34_critic_example.py ✅ PASS 6m 23s $0.66
01_standalone_sdk/36_event_json_to_openai_messages.py ✅ PASS 11.1s $0.00
01_standalone_sdk/37_llm_profile_store/main.py ✅ PASS 11.9s $0.00
01_standalone_sdk/38_browser_session_recording.py ✅ PASS 41.0s $0.04
01_standalone_sdk/39_llm_fallback.py ✅ PASS 14.2s $0.01
01_standalone_sdk/40_acp_agent_example.py ✅ PASS 46.3s $0.33
01_standalone_sdk/41_task_tool_set.py ✅ PASS 37.1s $0.04
01_standalone_sdk/42_file_based_subagents.py ✅ PASS 1m 3s $0.06
01_standalone_sdk/44_model_switching_in_convo.py ✅ PASS 11.7s $0.02
01_standalone_sdk/45_parallel_tool_execution.py ✅ PASS 3m 50s $0.55
01_standalone_sdk/46_agent_settings.py ✅ PASS 12.1s $0.01
01_standalone_sdk/47_defense_in_depth_security.py ✅ PASS 3.9s $0.00
01_standalone_sdk/48_conversation_fork.py ✅ PASS 23.3s $0.01
01_standalone_sdk/49_switch_llm_tool.py ✅ PASS 7.7s $0.04
01_standalone_sdk/50_async_cancellation.py ✅ PASS 14.4s $0.00
01_standalone_sdk/51_agent_hooks/main.py ✅ PASS 40.6s $0.05
01_standalone_sdk/52_dynamic_workflow.py ✅ PASS 2m 20s $0.10
01_standalone_sdk/53_client_defined_tools.py ✅ PASS 15.6s $0.01
01_standalone_sdk/54_goal_completion_loop.py ✅ PASS 30.9s $0.02
01_standalone_sdk/55_persistent_memory.py ✅ PASS 19.5s $0.02
01_standalone_sdk/56_structured_output.py ✅ PASS 37.7s $0.06
01_standalone_sdk/57_prompt_hooks/main.py ✅ PASS 14.6s $0.00
01_standalone_sdk/58_ask_oracle_tool/main.py ✅ PASS 19.7s $0.01
02_remote_agent_server/01_convo_with_local_agent_server.py ✅ PASS 38.9s $0.02
02_remote_agent_server/02_convo_with_docker_sandboxed_server.py ✅ PASS 1m 42s $0.04
02_remote_agent_server/03_browser_use_with_docker_sandboxed_server.py ✅ PASS 1m 7s $0.06
02_remote_agent_server/04_convo_with_api_sandboxed_server.py ✅ PASS 1m 49s $0.04
02_remote_agent_server/06_custom_tool/main.py ✅ PASS 5m 53s $0.07
02_remote_agent_server/07_convo_with_cloud_workspace.py ✅ PASS 47.8s $0.04
02_remote_agent_server/08_convo_with_apptainer_sandboxed_server.py ✅ PASS 4m 22s $0.03
02_remote_agent_server/09_acp_agent_with_remote_runtime.py ✅ PASS 1m 36s $0.42
02_remote_agent_server/10_cloud_workspace_share_credentials.py ✅ PASS 33.1s $0.04
02_remote_agent_server/11_conversation_fork.py ✅ PASS 57.8s $0.00
02_remote_agent_server/12_settings_and_secrets_api.py ✅ PASS 2m 16s $0.02
02_remote_agent_server/13_workspace_get_llm.py ✅ PASS 29.8s $0.01
02_remote_agent_server/14_client_defined_tools.py ✅ PASS 36.7s $0.02
02_remote_agent_server/15_openai_compatible_gateway.py ✅ PASS 24.8s $0.02
02_remote_agent_server/16_deferred_init.py ✅ PASS 23.1s $0.01
04_llm_specific_tools/01_gpt5_apply_patch_preset.py ✅ PASS 34.6s $0.03
04_llm_specific_tools/02_gemini_file_tools.py ✅ PASS 40.1s $0.08
05_skills_and_plugins/01_loading_agentskills/main.py ✅ PASS 18.1s $0.02
05_skills_and_plugins/02_loading_plugins/main.py ✅ PASS 17.7s $0.02
05_skills_and_plugins/04_mixed_marketplace_skills/main.py ✅ PASS 12.4s $0.00

✅ All tests passed!

Total: 69 | Passed: 69 | Failed: 0 | Total Cost: $4.13

View full workflow run

@github-actions

Copy link
Copy Markdown
Contributor

🧪 Integration Tests Results

Overall Success Rate: 96.0%
Total Cost: $15.11
Models Tested: 5
Timestamp: 2026-08-27 13:24:55 UTC

📁 Detailed Logs & Artifacts

Click the links below to access detailed agent/LLM logs showing the complete reasoning process for each model. On the GitHub Actions page, scroll down to the 'Artifacts' section to download the logs.

📊 Summary

Model Overall Tests Passed Skipped Total Cost Tokens
litellm_proxy_deepseek_deepseek_v4_flash 100.0% 5/5 0 5 $0.30 3,365,813
litellm_proxy_anthropic_claude_sonnet_4_6 100.0% 5/5 0 5 $2.96 4,276,555
litellm_proxy_gemini_3.1_pro_preview 80.0% 4/5 0 5 $6.64 6,701,684
litellm_proxy_openai_gpt_5.5 100.0% 5/5 0 5 $5.08 4,865,569
litellm_proxy_minimax_MiniMax_M2.7 100.0% 5/5 0 5 $0.14 2,237,106

📋 Detailed Results

litellm_proxy_deepseek_deepseek_v4_flash

  • Success Rate: 100.0% (5/5)
  • Total Cost: $0.30
  • Token Usage: prompt: 3,326,152, completion: 39,661, cache_read: 2,824,960, reasoning: 11,370
  • Run Suffix: litellm_proxy_deepseek_deepseek_v4_flash_bef8f59_deepseek_v4_flash_run_N5_20260827_130201

litellm_proxy_anthropic_claude_sonnet_4_6

  • Success Rate: 100.0% (5/5)
  • Total Cost: $2.96
  • Token Usage: prompt: 4,220,075, completion: 56,480, cache_read: 3,879,795, cache_write: 238,897, reasoning: 8,223
  • Run Suffix: litellm_proxy_anthropic_claude_sonnet_4_6_bef8f59_claude_sonnet_4_6_run_N5_20260827_130149

litellm_proxy_gemini_3.1_pro_preview

  • Success Rate: 80.0% (4/5)
  • Total Cost: $6.64
  • Token Usage: prompt: 6,629,293, completion: 72,391, cache_read: 4,065,349, reasoning: 46,812
  • Run Suffix: litellm_proxy_gemini_3.1_pro_preview_bef8f59_gemini_3_1_pro_run_N5_20260827_130203

Failed Tests:

  • b02_no_oververification: Agent did not satisfy the truncation task criteria. Judge reasoning: ## Core Task Completion

The agent successfully completed the primary objectives:

  1. ✓ Located MAX_CMD_OUTPUT_SIZE in openhands-tools/openhands/tools/terminal/constants.py
  2. ✓ Updated the value from 30000 to 20_000
  3. ✓ Used uv run pytest for testing as per development guide
  4. ✓ Provided a clear summary of changes with final git diff
  5. ✓ Verified tests pass with the modified constant

Violation of Evaluation Criteria

However, the agent violated a key evaluation criterion: "Verify that the agent did not over-verify the truncation limit change by running test suites much broader than necessary."

Problematic actions:

  1. Line 6 of actions: Searched for "30000" throughout the codebase unnecessarily (not required by the user)
  2. Line 8 of actions: Attempted uv run pytest tests/tools/ - this runs tests for ALL tools, not just the terminal package. The criteria explicitly states acceptable scope is "ALL files under tests/tools/terminal" (plural), implying the entire terminal package but NOT broader.
  3. This triggered unrelated tool tests and system instability (tmux session crashes), leading to cascading retries

Positive Recovery

The agent did recover well:

  • Recognized the broader test suite was problematic (after experiencing failures)
  • Returned to appropriately scoped testing: tests/tools/terminal/test_observation_truncation.py
  • Eventually provided correct results and summary

Assessment

While the final deliverable was correct and the agent demonstrated good recovery from over-verification, the evaluation criteria explicitly warns against running "test suites much broader than necessary." The agent's attempt to run pytest tests/tools/ directly violated this guidance. The appropriate minimal verification would have been to run only tests/tools/terminal/test_observation_truncation.py (or at most all terminal tests via tests/tools/terminal/), not the entire tool suite.

The agent should have stopped after the first successful test run on the targeted file and reported completion. (confidence=0.72) (Cost: $0.49)

litellm_proxy_openai_gpt_5.5

  • Success Rate: 100.0% (5/5)
  • Total Cost: $5.08
  • Token Usage: prompt: 4,820,129, completion: 45,440, cache_read: 4,405,760, reasoning: 14,688
  • Run Suffix: litellm_proxy_openai_gpt_5.5_bef8f59_gpt_5_5_run_N5_20260827_130149

litellm_proxy_minimax_MiniMax_M2.7

  • Success Rate: 100.0% (5/5)
  • Total Cost: $0.14
  • Token Usage: prompt: 2,210,406, completion: 26,700, cache_read: 1,932,770
  • Run Suffix: litellm_proxy_minimax_MiniMax_M2.7_bef8f59_minimax_m2_7_run_N5_20260827_130148

@hieptl
hieptl merged commit 322dec7 into main Aug 27, 2026
91 of 95 checks passed
@hieptl
hieptl deleted the rel-1.44.0 branch August 27, 2026 13:37
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

behavior-test integration-test Runs the integration tests and comments the results security-scan Run the release security scan (approval-drift + supply-chain) on this PR test-examples Run all applicable "examples/" files. Expensive operation.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants