fix(policy): workflow-scoped permits replace catch-all in financial + healthcare demos#13
Merged
Conversation
…althcare bundles The bundles opened with permit (principal, action, resource), making the documented workflow restrictions decorative: any workflow could call any catalog tool unless a forbid fired. Each tool is now explicitly permitted only for its declared workflow (the globex-financial pattern); wrong workflow, missing workflow, or unlisted action hits Cedar default-deny. Verified live: happy paths allow, HITL/escalation forbids fire with advice, and a call without _cmcp.workflow_id is denied. trace-output reference claims recaptured (policy bundle hashes changed). Requires agentrust-io/cmcp#285 (egress context carries workflow_id). Closes #12. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…14) Verify the captured claim and audit bundle in one command, then mutate a single field and watch the signature fail. Makes the tamper-evidence guarantee tangible in the quickstart. Requires agentrust-io/cmcp#287. Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
imran-siddique
added a commit
that referenced
this pull request
Jun 12, 2026
PRs #11, #13, and #14 were stacked on #10. When #10 squash-merged and its branch was deleted, GitHub closed/merged the rest of the stack into the deleted feature branches, so their content never reached main: financial and healthcare shipped the unparseable advice{} Cedar policies, agents called endpoints that do not exist, the mock servers and the cmcp verify tamper demo were missing. This restores the verified stack tip for the four original examples plus .gitignore, with em dashes scrubbed per repo style, and merges the root README: corrected table and 3-terminal quickstart from the stack, plus the industrial-embodied-ai row with the #18 wording. Verified before commit: all Cedar bundles parse and produce the documented decisions (workflow-scoped allow, escalation/HITL deny, default deny), and all catalog entries validate against the cmcp schema. Co-authored-by: Claude Fable 5 <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
Closes #12. The financial-services and healthcare Cedar bundles opened with a catch-all
permit (principal, action, resource);, so the workflow restrictions described in the READMEs were decorative -- any workflow (or none) could call any catalog tool unless a forbid fired. Each tool is now explicitly permitted only for its declared workflow, the same pattern the globex-financial tenant already used. Wrong workflow, missing workflow, or an unlisted action is denied by Cedar default-deny.This surfaced a real runtime bug fixed in agentrust-io/cmcp#285: the egress evaluation context lacked
workflow_id, so default-deny bundles denied every response at egress. This PR requires cmcp#285.Verified live (all four paths)
mifid-ii-art-25advice--trigger-hitl: deny witheu-ai-act-art-14advicetools/callwithout_cmcp.workflow_id-> 403 POLICY_DENYtrace-output/reference claims recaptured from these runs (bundle hashes changed)Stacked on #11.
Generated with Claude Code