Repository navigation
Add opt-in Paste Stack integration for apps - #23
Merged
Merged
Conversation
Signed-off-by: Gustavo Schonarth <gustavo@schonarth.com.br>
tarikbc
marked this pull request as ready for review
November 6, 2026 21:44
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
Apps cannot currently add separate items to Copy's Paste Stack. Add an opt-in, versioned batch interface and a Shortcuts action that accept text items, preserve their order and duplicates, and activate Paste Stack in FIFO mode. Replacing a nonempty stack always requires confirmation.
External access is off by default. Settings > Permissions lets the user enable it, review and revoke remembered callers, or explicitly add an unsafe developer exception tied to an app's bundle identifier and path. Remembered permissions and the opt-in are held in Copy's data-protection Keychain group; inaccessible protected storage fails closed. A disabled installation does not read that Keychain item for incoming requests.
The Apple-event interface derives the sender from the actual audit token; a capability handshake contains no user text. The App Intent uses the same validation and stack operation but cannot establish an originating app, so it requests approval every time. Batch requests are bounded and expire; stack changes while a confirmation is open require another confirmation.
Validation completed
git diff --check, release-script shell syntax, and dependency pin checks passed.Owner validation required before merge
This is a draft: the signing and security paths have not been verified with the owner's Apple-issued credentials. Please do not merge or release until these steps pass:
COPY_PROVISIONING_PROFILE_BASE64for release CI, or install the profile locally and setCOPY_PROVISIONING_PROFILEto its UUID as described indocs/paste-stack-integration.md. Do not share private signing keys.Unsigned or self-signed local tests cannot prove the Keychain group, shipping signature, or profile configuration. The owner should inspect the release pipeline and its new profile secret before enabling it.