fix: bump @tigrisdata/storage to 3.5.2 for SigV4 path-encoding fix#100
Merged
Conversation
Picks up @tigrisdata/storage@3.5.2 which fixes `403 SignatureDoesNotMatch` from `copy`, `move`, and `updateObject` when the object key contains `/` or any character that requires percent-encoding (space, `?`, `=`, etc.) and the request is signed with access-key SigV4. This unblocks the integration tests that have been failing on main since #99 landed: - `folder auto-detection > should auto-detect folder for cp/mv` - `file to folder operations > *` - `wildcard folder marker operations > *` - `cp/mv command - additional branches > should *match wildcard*` OAuth/session-token callers were unaffected because that auth path skips SigV4 signing entirely, which is why this only surfaced once the CI integration suite started exercising `copy`/`move` with access keys after the cp/mv SDK swap in #99. Verified locally with access-key auth against a real bucket: - nested-key cp (`folder/file.txt`) - special-char key cp (`folder/my file.txt`) - same-bucket rename via `mv` Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
garrensmith
approved these changes
May 11, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Picks up
@tigrisdata/storage@3.5.2, which fixes403 SignatureDoesNotMatchfromcopy,move, andupdateObjectwhen the object key contains/or any character that requires percent-encoding (space,?,=, etc.) and the request is signed with access-key SigV4.This unblocks the integration tests that have been failing on
mainsince #99 landed.Why this only broke on CI
The custom storage HTTP client takes two different auth branches:
PR #99 was the first time
copyandmovegot exercised under access-key auth at scale (integration tests useTIGRIS_STORAGE_ACCESS_KEY_IDfrom secrets). Local development via OAuth never hit the broken signing path, so the bug only surfaced in CI.What the SDK actually fixed
Two compounding encoding issues, both rooted in
@smithy/signature-v4:SignatureV4was constructed withouturiEscapePath: false. The default is the AWS-standard double-encoding scheme, but S3 (and Tigris gateway) use single-encoding — so the signer re-percent-encoded path sequences (%20→%2520) while the gateway treated the wire path as already single-encoded.X-Amz-Copy-Sourceheader were built with plainencodeURIComponent, which turned/into%2F. NewencodeObjectKeyhelper splits on/and per-segment encodes, preserving separators.Details: storage#101.
CI failures this addresses
All 10 cp/mv regression failures observed on main since the merge of #99, including:
folder auto-detection > should auto-detect folder for cp/mv without trailing slashfile to folder operations > should copy/move file to existing folderwildcard folder marker operations > should copy/move folder contents and marker using wildcardcp/mv - additional branches > should copy/move objects matching wildcard patternThe 11th failure (
objects set-access > should error on missing --access) is a separate, pre-existing CLI quirk invalidateRequiredWhenand is not in scope here.Test plan
npm run format:checkandnpm run lintcleannpx tsc --noEmitcleannpm test— 659 unit/spec tests passnpm run buildcleancp src.txt nested/file.txt(nested key) — was403, now succeedscp src.txt 'folder/my file.txt'(special char) — was403, now succeedsmv nested/file.txt nested/renamed.txt -f(same-bucket rename) — works🤖 Generated with Claude Code
Note
Medium Risk
Patch-level dependency bump, but it changes request signing/encoding behavior in the storage client, which can affect object operations and authentication paths.
Overview
Updates the CLI’s
@tigrisdata/storagedependency from3.5.1to3.5.2(and refreshespackage-lock.json) to pick up the upstream SigV4 path/object-key encoding fix.This is intended to resolve
403 SignatureDoesNotMatchfailures forcopy/move/updateObjectwhen object keys contain/or other percent-encoded characters under access-key auth.Reviewed by Cursor Bugbot for commit 280e64a. Bugbot is set up for automated code reviews on this repo. Configure here.