Skip to content

fix(criteria): search the whole command in command_executed, not just the first 2000 chars - #196

Draft
bai-uipath wants to merge 4 commits into
mainfrom
bai/command-executed-full-command
Draft

bai-uipath wants to merge 4 commits into
mainfrom
bai/command-executed-full-command

Conversation

@bai-uipath

@bai-uipath bai-uipath commented Sep 23, 2026

Copy link
Copy Markdown
Collaborator

command_executed only searched the first 2000 characters of each command, a bound meant to limit ReDoS. Agents that batch work into one long heredoc script (write files, then uip agent refresh && uip agent validate at the end) had the checked command land past that point, so the grader scored it as never run and the task failed.

This keeps the per-search bound but covers the whole command: the first 2000 characters as before, then the rest in bounded windows aligned to shell lines. Forbidden-command (max_count) and exclude_pattern checks now also see the whole command, so a retired command at the end of a long script no longer slips through.

Re-grading published runs with this change: on the Opus 5.5 full-suite run, 35 tasks that ran the checked command flip from fail to pass and none flip the other way. On the 2026-09-23 Sonnet 5 nightly, no scores change. This unblocks moving the claude-code nightly to Opus 5.5.

It also bumps the harness SDKs and CLIs to the newest releases that clear CI's 48-hour package-age gate: Claude Code 2.1.177 → 2.1.277 (and claude-agent-sdk 0.2.124 → 0.2.157, which bundles the same CLI), codex 0.144.4 → 0.155.1, antigravity 0.1.8 → 0.1.17, Pi 0.84.4 → 0.87.0, plus anthropic, litellm, harbor and uipath. The old Claude Code pin was three months old and priced Sonnet 5 at a stale $3/$15; 2.1.277 prices it at list. Opus 5.5 is still priced at Claude Code's unknown-model fallback ($5/$25, with cache reads at $0.50), about 1.6x its list cost on a typical run, because its price entry first shipped in Claude Code 2.1.280, which is too new for the gate. A follow-up bump picks it up. The SDK also runs its own bundled CLI rather than the image's, so the version reported in run metadata now matches what actually ran.

Package Was Released Age Releases behind Now Released
Claude Code CLI (agent image) 2.1.177 2026-06-13 102 days 88 2.1.277 2026-09-18
claude-agent-sdk 0.2.124 2026-07-20 65 days 35 0.2.157 2026-09-18
openai-codex 0.144.4 2026-07-17 68 days 5 0.155.1 2026-09-20
openai-codex-cli-bin 0.144.4 2026-07-15 70 days 7 0.155.1 2026-09-20
google-antigravity 0.1.8 2026-07-23 62 days 10 0.1.17 2026-09-16
Pi CLI 0.84.4 2026-08-28 26 days 6 0.87.0 2026-09-21
anthropic 1.0.0 2026-08-20 34 days 8 1.7.0 2026-09-18
litellm 1.98.0 2026-08-22 32 days 10 1.102.0 2026-09-20
harbor 0.22.0 2026-08-22 32 days 1 0.23.0 2026-09-12
uipath 2.10.31 2026-03-25 182 days 131 2.14.23 2026-09-21
openai 2.54.0 2026-08-11 43 days 25 2.54.0 (unchanged: litellm requires <3, latest is 3.19.1)

Ages are as of 2026-09-23, "releases behind" counts stable releases newer than the old pin, and "now" is the newest release at least 48 hours old.

🤖 Generated with Claude Code

… the first 2000 chars

The ReDoS bound truncated every command to its first 2000 characters, so a checked command at the end of a long heredoc script was scored as never run. Search the rest of the command in bounded, line-aligned windows instead.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
bai-uipath and others added 3 commits September 23, 2026 16:43
- claude-agent-sdk 0.2.124 -> 0.2.159 (bundles Claude Code 2.1.281) and the image's Claude Code 2.1.177 -> 2.1.281, so the CLI the SDK runs and the one reported in environment_info agree. 2.1.281 knows Opus 5.5 and the current Sonnet 5 price, so claude-code turn costs match list pricing again.
- openai-codex / openai-codex-cli-bin 0.144.4 -> 0.156.1
- google-antigravity 0.1.8 -> 0.1.18: workspace containment moved into localharness, so policy.workspace_only() no longer carries a path predicate; the test now checks the resolved workspaces cover the skill roots.
- Pi 0.84.4 -> 0.87.1, anthropic 1.0.0 -> 1.8.0, litellm 1.98.0 -> 1.102.1, harbor 0.22.0 -> 0.23.0, uipath 2.10.31 -> 2.14.25
- Ignore pydantic's ReadOnly TypedDict warning from litellm>=1.102 types, and regenerate the codex golden for the two null fields the new SDK serializes.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
harbor 0.23.0 annotates BaseAgent.SUPPORTS_ATIF as ClassVar[bool], so the plain bool override fails pyright's reportIncompatibleVariableOverride.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…gate

CI's safe-chain rejects any package published less than 48 hours ago, so every Linux job failed at install. Relocked with every package cut off at 2026-09-21T23:00Z: claude-agent-sdk 0.2.157 (bundles Claude Code 2.1.277), anthropic 1.7.0, openai-codex and cli-bin 0.155.1, google-antigravity 0.1.17, litellm 1.102.0, uipath 2.14.23; Claude Code image ARG 2.1.277 and Pi 0.87.0.

Claude Code 2.1.277 prices Sonnet 5 at list but has no Opus 5.5 entry, so Opus 5.5 runs still cost at its $5/$25 fallback until the next bump to 2.1.280 or later.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant