feat: make Addie proactively read shared files#753
Merged
Conversation
Previously when users shared text files in Slack, Addie would only see file metadata and wait for an explicit request to read the file. This was frustrating UX - users expected Addie to see what they shared. Changes: - Update read_slack_file tool description to instruct Claude to proactively read files when shared, without waiting to be asked - Add File Handling section to Addie's system prompt with explicit guidance on proactive file reading - Include guidance to inform users if file content is truncated Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
bokelley
added a commit
that referenced
this pull request
Apr 22, 2026
Original note flagged the bundled 5.9 defaults as narrower; upstream #753 restores allowlist-based conflict checking and whole-body secret scanning before this merges, so the narrower-than-local state is transient. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
bokelley
added a commit
that referenced
this pull request
Apr 22, 2026
…1 walks structured auth (#2639) #2771 added server/src/compliance/assertions/context-no-secret-echo.ts as a stricter override of the SDK default while upstream was a no-op for structured `auth` options (adcp-client#751). That's fixed in @adcp/client 5.9.1 (#752 walks structured auth + #753 widens to full- body scan + suspect-property-name match + bearer-token regex). The local override's coverage is now a subset of the SDK default. - Delete server/src/compliance/assertions/ — 5.9.1 auto-registers the three cross-step defaults on any @adcp/client/testing import. - Drop the side-effect imports in services/storyboards.ts and the three manual-test runner scripts. - Drop the /dist/compliance/assertions/ .gitignore entry that only existed while tsc output was shadowing the compliance-tarball path. - Bump @adcp/client to ^5.9.1. - Refresh universal/idempotency.yaml comment to point at the bundled defaults. Consumers who need stricter per-repo checks can override via the new registerAssertion(spec, { override: true }) option (adcp-client#752). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
bokelley
added a commit
that referenced
this pull request
Apr 22, 2026
…efaults (#2639) (#2769) * spec(compliance): drop redundant assertion modules, use bundled 5.9 defaults (#2639) @adcp/client@5.9 bundles and auto-registers the three cross-step assertions this repo was shipping as local modules: - idempotency.conflict_no_payload_leak - context.no_secret_echo - governance.denial_blocks_mutation They register on `@adcp/client/testing` import via the upstream default-invariants side effect, so every runStoryboard / comply() call resolves them without explicit loading. Delete the local modules, their test, the side-effect imports that were loading them, and the .gitignore entry that kept the tsc output out of the published spec-tarball path. Bump @adcp/client to ^5.9.0. Update the comment on universal/idempotency.yaml to point at the bundled defaults instead of the old "import the module first" instruction. Closes #2665 (in-band default registration was the chosen path over a sibling @adcp/compliance-assertions package). Completes the end state for #2639 — spec owns the invariant ids and YAML wiring; SDK owns the implementations, registry, and auto-registration. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * chore: point changeset at #753 widening for security-equivalence Original note flagged the bundled 5.9 defaults as narrower; upstream #753 restores allowlist-based conflict checking and whole-body secret scanning before this merges, so the narrower-than-local state is transient. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * spec(compliance): drop local context.no_secret_echo override now 5.9.1 walks structured auth (#2639) #2771 added server/src/compliance/assertions/context-no-secret-echo.ts as a stricter override of the SDK default while upstream was a no-op for structured `auth` options (adcp-client#751). That's fixed in @adcp/client 5.9.1 (#752 walks structured auth + #753 widens to full- body scan + suspect-property-name match + bearer-token regex). The local override's coverage is now a subset of the SDK default. - Delete server/src/compliance/assertions/ — 5.9.1 auto-registers the three cross-step defaults on any @adcp/client/testing import. - Drop the side-effect imports in services/storyboards.ts and the three manual-test runner scripts. - Drop the /dist/compliance/assertions/ .gitignore entry that only existed while tsc output was shadowing the compliance-tarball path. - Bump @adcp/client to ^5.9.1. - Refresh universal/idempotency.yaml comment to point at the bundled defaults. Consumers who need stricter per-repo checks can override via the new registerAssertion(spec, { override: true }) option (adcp-client#752). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * chore: fold in reviewer nits — secret-length floor note + override-escape hint - Changeset: acknowledge the SDK default's 16-char verbatim-secret floor (vs local's 8), called out by security-review as the one residual scope shift. Real credentials clear 16; the property-name check is the primary gate for short fixture values. Consumers can override per #752. - universal/idempotency.yaml comment: mention the `registerAssertion(spec, { override: true })` escape hatch so downstream implementers know where to reach for stricter per-repo checks. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
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
read_slack_filetool description to emphasize immediate file readingProblem
When users shared text files (.txt, .md, .json, etc.) in Slack, Addie would only see file metadata and wait for an explicit request like "what's in this file?" before reading it. Users expected Addie to automatically see what they shared.
Solution
Updated both the tool description and system prompt to instruct Claude to:
read_slack_filewhen[Shared files]appears in a messageTest plan
🤖 Generated with Claude Code