Skip to content

CHANGELOG for the October exploration fixes (#148–#161) — merge last - #163

Merged
ya-luotao merged 4 commits into
mainfrom
chore/changelog-exploration-fixes
Oct 3, 2026
Merged

ya-luotao merged 4 commits into
mainfrom
chore/changelog-exploration-fixes

Conversation

@ya-luotao

@ya-luotao ya-luotao commented Oct 3, 2026 •

Copy link
Copy Markdown
Collaborator

What and why

The ## [Unreleased] entries for the fourteen fix PRs of the October exploration batch (#148–#161), collected in
one place so that the fix PRs do not conflict with each other in CHANGELOG.md. Under Fixed, the entries that
matter for safety or permissions come first (hook decisions ignored, sandbox rules not applied, "always allow" not
persisted, tools: String ignored, sessions of another project, a relative CLI path running another binary,
credentials in #inspect, secrets left in a preserved resume dir). Three "set back to nil" entries from three PRs
are one entry here, and three page corrections made inside other PRs are listed with the documentation entry.

Also README.md: the sentence on what CI runs names Ruby 4.0 and the keyless smoke test that #153 adds.

Please merge this one last. Every entry links its PR.

Merge order

All fifteen branches were merged onto current main (9d2abff) in this order in a scratch checkout, with no
conflict, and the whole tree was checked: bundle exec rspec on the lockfile, gemfiles/latest.gemfile and gemfiles/floor.gemfile — 3556 examples, 0 failures each; RuboCop clean; rake rbs:validate rbs:test (3192 examples); the Rails specs on Rails 7.1 and 8 (180 each); formal/tla/run.sh as expected. The same merged tree also passed the full CI matrix — Linux Ruby 3.2 / 3.3 / 3.4 / 4.0, macOS, the dependency floor and latest legs, Rails, the RBS runtime check and the keyless CLI smoke — in a throwaway draft PR (#162, closed). The first local run of the merged tree found two interactions between PRs, both fixed in their own PRs before that: a spec helper in #154 that shadowed RSpec's receive once #159's suite-wide stub is in, and a rubocop:disable that #157 and #159 together made redundant.

  1. Harden the test suite and CI (seed order, Ruby 4.0, hang bounds, protocol pins, keyless CLI smoke) #153 — test suite and CI (first: it also fixes the order-dependent at-exit registry leak that made two other PRs'
    CI legs flaky once each)
  2. Fix OTelObserver token usage per response; trace sessions that fail before init #148 otel · Honor Hash hook outputs in any key style; fix other wire-shape contract bugs #149 wire contract · Answer every failing callback: non-StandardError failures and unencodable messages #150 callback containment · Filter more credentials in #inspect, make it never raise, fix #[] with a setter-shaped name #151 types · Fix CLI installer defects (fiber deadlock, proxy, read-only dir, fsync) and SDK MCP schema/result bugs #152 installer + SDK MCP · Fix runtime lifecycle defects in Query, FiberBoundary, query() and Client #154 lifecycle
  3. Docs and packaging: make the published reference match the code #155 docs (before Railtie wrapper: stop reporting SDK-handled errors; make the Rails guide say what callbacks really see #158: the Rails guide links to its new configuration.md#session-isolation)
  4. Resolve the CLI to one absolute path; contain stderr-callback failures; warn when the sandbox is off #156 transport · Fix session reads, listing and mutations (parallel tool results, worktrees, encodings, long and odd paths) #157 sessions · Railtie wrapper: stop reporting SDK-handled errors; make the Rails guide say what callbacks really see #158 Rails · Store-backed resume: Keychain for a custom config dir, a scrubbed preserved dir, no batch lost to a cancelled flush #159 store-backed resume
  5. Accept the natural Ruby spellings in Hash-form options (sandbox keys, Symbol type:, String tools:, Pathname) #160 Hash-form spellings (stacked on Honor Hash hook outputs in any key style; fix other wire-shape contract bugs #149 and Docs and packaging: make the published reference match the code #155) · Let a disconnect from another thread finish the CLI's graceful shutdown #161 cross-thread disconnect (stacked on Fix runtime lifecycle defects in Query, FiberBoundary, query() and Client #154)
  6. this PR

As a loop (stops at the first failure):

for n in 153 148 149 150 151 152 154 155 156 157 158 159 160 161 163; do gh pr merge "$n" --merge || break; done

Checklist

  • bundle exec rake passes on the merged tree (see above)
  • CHANGELOG entries under ## [Unreleased]
  • Docs updated (README.md)
  • No code change in this PR

🤖 Generated with Claude Code

https://claude.ai/code/session_01CNgMt2RjeBLyRP3CWFWNy2

The [Unreleased] entries of PRs #148-#161, collected here so the fix PRs
do not conflict with each other in CHANGELOG.md. Fixes that matter for
safety or permissions come first under Fixed; the three "set back to
nil" entries are one, and three page corrections made in other PRs are
listed with the documentation entry.

README: the sentence on what CI runs names Ruby 4.0 and the keyless
smoke test the test-suite PR (#153) adds.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CNgMt2RjeBLyRP3CWFWNy2
@ya-luotao

Copy link
Copy Markdown
Collaborator Author

@codex review

@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 3, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-10-03T02:57:55.457657Z 450ffbf Manual request
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: bec5d871d1

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread CHANGELOG.md Outdated
### Changed
- `docs/cli-installer.md` now says when `CLIInstaller::PINNED_CLI_VERSION` moves: pin-only changes ship with the next gem release rather than one release per CLI bump. It also covers how a gem patch can move your CLI and how to take a newer CLI before a release pins it. The pin-bump workflow keeps a single `[Unreleased]` entry for the pin.
- `CLIInstaller::PINNED_CLI_VERSION` moves from 2.1.285 to **2.1.287**, following the CLI the Python SDK bundles. `CLIInstaller.install_pinned` installs it. See the [Claude Code changelog](https://github.com/anthropics/claude-code/blob/main/CHANGELOG.md).
- **The Rails guide, both Rails examples and the generated initializer turn off the CLI's per-project auto-memory** (`env: { 'CLAUDE_CODE_DISABLE_AUTO_MEMORY' => '1' }`; commented out in the initializer). Every SDK session reads that memory and a `claude_code`-preset session writes it without a permission check, so in a multi-user app one user's "remember …" would reach every other user's session. If you copied those examples, add the line; the value must be `'1'`. ([#158](https://github.com/ya-luotao/claude-agent-sdk-ruby/pull/158))

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Don't claim a commented setting disables auto-memory

The generated initializer cannot “turn off” auto-memory if its env: entry is commented out, so a newly generated multi-user Rails app remains exposed to the cross-session memory sharing described here until the developer manually enables it. This security-sensitive release note gives contradictory guidance; either make the initializer setting active by default or say that the initializer only documents the opt-out.

Useful? React with 👍 / 👎.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed in 499a806: the entry now says the guide and both examples turn auto-memory off, and that the generated initializer only documents the switch (commented out), so a newly generated app is not isolated until it is uncommented. Making it active by default is one of the open maintainer decisions (the auto-memory default), so the template stays as it is in #158.

…witch

The entry said the generated initializer turns auto-memory off, while
its env: line is commented out — a newly generated multi-user app is not
isolated until the developer uncomments it. The entry now says exactly
that (found by the Codex review of this PR).

Also folds in the fixes made after the Codex reviews of #152, #156 and
#157: the binary's mode is synced after its chmod; a debug_stderr: sink
and the sandbox warning are contained like the stderr: callback;
tag: false no longer clears a tag.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CNgMt2RjeBLyRP3CWFWNy2
@ya-luotao

Copy link
Copy Markdown
Collaborator Author

@codex review

@chatgpt-codex-connector

Copy link
Copy Markdown

Codex Review: Didn't find any major issues. Swish!

Reviewed commit: 499a806a87

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

…and tags

Folds in the two fixes made after the Codex re-reviews of #156 (a subclass
that wraps the CLI gets cli_path as given) and #157 (a binary title or
tag is read as UTF-8).

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CNgMt2RjeBLyRP3CWFWNy2
@ya-luotao

Copy link
Copy Markdown
Collaborator Author

@codex review

@chatgpt-codex-connector

Copy link
Copy Markdown

Codex Review: Didn't find any major issues. Chef's kiss.

Reviewed commit: 450ffbf821

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Folds in the fixes made after the third Codex reviews of #156 (discovery
searches the system directories when PATH is unset) and #157 (an
off-chain result a dropped branch went on from is left out).

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CNgMt2RjeBLyRP3CWFWNy2
@ya-luotao
ya-luotao merged commit 1e56e56 into main Oct 3, 2026
10 checks passed
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