Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
229 commits
Select commit Hold shift + click to select a range
f559721
test(permission-groups): pin config coercion before deriving it
waleedlatif1 Aug 29, 2026
1230c21
refactor(permission-groups): derive the config from one field registry
waleedlatif1 Aug 29, 2026
d47f5d6
feat(permission-groups): add the capability gate to the authorization…
waleedlatif1 Aug 29, 2026
66cb9c0
feat(permission-groups): enforce the twelve UI-only keys on the server
waleedlatif1 Aug 29, 2026
d0ea115
fix(permission-groups): close the legacy-block and enrichment bypasses
waleedlatif1 Aug 29, 2026
060fc79
feat(permission-groups): govern personal API keys per group
waleedlatif1 Aug 29, 2026
b37d822
feat(permission-groups): govern log export
waleedlatif1 Aug 29, 2026
395d47f
chore(docs): publish the permission-group 403 code
waleedlatif1 Aug 29, 2026
8992e09
feat(permission-groups): declare the remaining governed capabilities
waleedlatif1 Aug 29, 2026
25f13a0
fix(permission-groups): gate the MCP route that bypasses its use case
waleedlatif1 Aug 29, 2026
9aa8fb9
fix(permission-groups): gate API-key management, closing the workspac…
waleedlatif1 Aug 29, 2026
8db1db2
feat(permission-groups): declare capabilities on the remaining resour…
waleedlatif1 Aug 29, 2026
9c7800c
feat(permission-groups): enforce workspace.create, member directory a…
waleedlatif1 Aug 29, 2026
724f2e9
feat(permission-groups): enforce the knowledge capabilities
waleedlatif1 Aug 29, 2026
d4eabdb
merge: annotate operations across mcp, skills, custom tools, catalog …
waleedlatif1 Aug 29, 2026
02b4bca
feat(permission-groups): enforce tables.create, tables.export and fil…
waleedlatif1 Aug 29, 2026
a946ebd
merge: govern workspace creation, the member directory and CLI access
waleedlatif1 Aug 29, 2026
880f24d
merge: govern knowledge base creation, uploads and connector sources
waleedlatif1 Aug 29, 2026
21020ca
feat(permission-groups): annotate workflow operations and close the p…
waleedlatif1 Aug 29, 2026
c76129f
merge: govern table creation, table export and bulk file download
waleedlatif1 Aug 29, 2026
7d4d405
merge: annotate workflow operations and validate blocks at persist time
waleedlatif1 Aug 29, 2026
dacf676
feat(permission-groups): enforce the four declared-but-unwired capabi…
waleedlatif1 Aug 29, 2026
9b2483f
chore(permission-groups): re-record the settings page module baseline
waleedlatif1 Aug 29, 2026
e36105c
merge: govern execution cost, personal credentials, webhooks and tool…
waleedlatif1 Aug 29, 2026
015fde2
feat(permission-groups): require a capability on every workspace oper…
waleedlatif1 Aug 29, 2026
31cce78
refactor(permission-groups): one way to ask whether a capability is w…
waleedlatif1 Aug 29, 2026
85975b4
docs(skills): add add-permission-group-item and validate-permission-g…
waleedlatif1 Aug 29, 2026
fa155e3
docs(skills): add and validate a permission-group item
waleedlatif1 Aug 29, 2026
fb3339d
refactor(permission-groups): remove the count-down mode and settle th…
waleedlatif1 Aug 29, 2026
10d8e79
perf(permission-groups): hoist the block-allowlist check out of the s…
waleedlatif1 Aug 29, 2026
a877371
refactor(permission-groups): one API for every capability gate
waleedlatif1 Aug 29, 2026
3466d27
merge: clean the permission-groups module and its audit
waleedlatif1 Aug 29, 2026
2c9c366
merge: route every capability decision through the shared assertion API
waleedlatif1 Aug 29, 2026
037b4e9
fix(permission-groups): stop capabilities refusing workflow runs
waleedlatif1 Aug 29, 2026
393d9f8
refactor(permission-groups): keep only the validators that outlive th…
waleedlatif1 Aug 29, 2026
1d17c78
merge: collapse the redundant permission-check validators
waleedlatif1 Aug 29, 2026
481146d
fix(permission-groups): close the defects an adversarial review found
waleedlatif1 Aug 30, 2026
145716a
Merge remote-tracking branch 'origin/staging' into feat/permission-gr…
waleedlatif1 Aug 30, 2026
5f190fb
refactor(permission-groups): route every config read through the requ…
waleedlatif1 Aug 30, 2026
e8b044a
test(permission-groups): cover the inbox, workflow-MCP, and Chat capa…
waleedlatif1 Aug 30, 2026
feb05aa
Merge branches 'pgx/memo' and 'pgx/tests' into feat/permission-groups…
waleedlatif1 Aug 30, 2026
d8dfb35
docs(permission-groups): tell admins what they are actually revoking
waleedlatif1 Aug 30, 2026
a7cebeb
refactor(permission-groups): remove indirection and close the audit's…
waleedlatif1 Aug 30, 2026
a9f1718
Merge branch 'pgx/docs' into feat/permission-groups-coverage
waleedlatif1 Aug 30, 2026
597a5e5
Merge branch 'pgx/module' into feat/permission-groups-coverage
waleedlatif1 Aug 30, 2026
681986c
refactor(permission-groups): drop the types.ts re-export shim
waleedlatif1 Aug 30, 2026
6ea2ed1
fix(permission-groups): enforce tables.use on the raw internal table …
waleedlatif1 Aug 30, 2026
0ee1f42
Merge branch 'pgx/tables' into feat/permission-groups-coverage
waleedlatif1 Aug 30, 2026
99483a6
test(permission-groups): make every operation fixture declare its cap…
waleedlatif1 Aug 30, 2026
246a866
Merge branch 'pgx/fixtures' into feat/permission-groups-coverage
waleedlatif1 Aug 30, 2026
a53e5b3
refactor(permission-groups): share the memo, the refusal sentence, an…
waleedlatif1 Aug 30, 2026
fdb0c21
Merge branch 'pgx/leftovers' into feat/permission-groups-coverage
waleedlatif1 Aug 30, 2026
6eab5a4
test(knowledge): assert the shared connector refusal sentence
waleedlatif1 Aug 30, 2026
4254b17
fix(permission-groups): enforce declared capabilities on the v1 publi…
waleedlatif1 Aug 30, 2026
faff3bd
Merge branch 'pgx/v1' into feat/permission-groups-coverage
waleedlatif1 Aug 30, 2026
c4c4a11
refactor(permission-groups): keep the authorization funnel's module g…
waleedlatif1 Aug 30, 2026
9e75a43
Merge branch 'pgx/graph' into feat/permission-groups-coverage
waleedlatif1 Aug 30, 2026
cb412fc
refactor(permission-groups): keep the universal route wrapper's graph…
waleedlatif1 Aug 30, 2026
35807ef
fix(permission-groups): keep a workspace API key out of its creator's…
waleedlatif1 Aug 30, 2026
a87e28c
Merge branch 'pgx/principal' into feat/permission-groups-coverage
waleedlatif1 Aug 30, 2026
d55446c
fix(permission-groups): make the key-creator substitution structurall…
waleedlatif1 Aug 30, 2026
413d851
docs(skills): realign add-permission-group-item with the refactored code
waleedlatif1 Aug 30, 2026
55b5356
docs(permission-groups): state what the executor exemption actually does
waleedlatif1 Aug 30, 2026
ce90988
docs(skills): realign validate-permission-group-item with the refacto…
waleedlatif1 Aug 30, 2026
7a22b63
Merge branch 'pgx/sweep' into feat/permission-groups-coverage
waleedlatif1 Aug 30, 2026
f93bce7
fix(permission-groups): enforce secrets.manage and integrations.manag…
waleedlatif1 Aug 30, 2026
852267b
test(permission-groups): pin the secrets.manage gate on the environme…
waleedlatif1 Aug 30, 2026
fe4edd0
fix(permission-groups): gate the CLI key mint on api_keys.manage
waleedlatif1 Aug 30, 2026
3681c0e
test(permission-groups): pin the integrations.manage gate on current-…
waleedlatif1 Aug 30, 2026
bc433f3
Merge branch 'pgx/cli' into feat/permission-groups-coverage
waleedlatif1 Aug 30, 2026
f4eac12
Merge branch 'pgx/secrets' into feat/permission-groups-coverage
waleedlatif1 Aug 30, 2026
4deb73f
fix(permission-groups): close the cost oracle and two capability-befo…
waleedlatif1 Aug 30, 2026
54f5153
Merge branch 'pgx/proj' into feat/permission-groups-coverage
waleedlatif1 Aug 30, 2026
8aaa3e4
fix(permission-groups): make an operation the audit cannot read a fai…
waleedlatif1 Aug 30, 2026
a2a8953
fix(permission-groups): gate the session arm of the OAuth credentials…
waleedlatif1 Aug 30, 2026
50e7c57
Merge branch 'pgx/audit' into feat/permission-groups-coverage
waleedlatif1 Aug 30, 2026
e7a886f
fix(permission-groups): project logs on the v2 surface and close its …
waleedlatif1 Aug 30, 2026
1729b69
test(oauth): mock the organization lookup the new capability gate makes
waleedlatif1 Aug 30, 2026
40149f3
Merge branch 'pgx/logs2' into feat/permission-groups-coverage
waleedlatif1 Aug 30, 2026
3f74686
fix(permission-groups): project run cost on the v2 workflow-runs listing
waleedlatif1 Aug 30, 2026
100f919
test(permission-groups): share the v1 ambient request-admission mocks
waleedlatif1 Aug 31, 2026
dbf04d5
refactor(permission-groups): one builder for the internal capability-…
waleedlatif1 Aug 31, 2026
f55c2b4
test(permission-groups): drop the duplicated v1 log-projection gate t…
waleedlatif1 Aug 31, 2026
26b9eae
docs(skills): trim the permission-group-item skills to their load-bea…
waleedlatif1 Aug 31, 2026
98ce514
test(v1): make the mocked middleware helpers mirror the real ones
waleedlatif1 Aug 31, 2026
62fcc19
refactor(permission-groups): converge the workspace-else-organization…
waleedlatif1 Aug 31, 2026
405ff13
refactor(table): delete the dead ungated table access checks
waleedlatif1 Aug 31, 2026
061d6a1
refactor(permission-groups): fold the single-caller unverified contex…
waleedlatif1 Aug 31, 2026
b5f789b
Merge branch 'pgx/c2' into feat/permission-groups-coverage
waleedlatif1 Aug 31, 2026
e9c4f21
docs(permission-groups): correct the organization-scope call-site claim
waleedlatif1 Aug 31, 2026
ee7a841
Merge branch 'pgx/c1' into feat/permission-groups-coverage
waleedlatif1 Aug 31, 2026
12e616d
chore(permission-groups): apply the /cleanup pass findings
waleedlatif1 Aug 31, 2026
23a6d17
docs(skills): patch six omissions in the permission-group skills
waleedlatif1 Aug 31, 2026
1285a08
fix(permission-groups): say where hideOrgMemberDirectory is read from
waleedlatif1 Aug 31, 2026
a5da277
fix(logs): project cost and execution payloads on the run-detail and …
waleedlatif1 Aug 31, 2026
02bee70
fix(permission-groups): let the fail-closed api-keys policy heal
waleedlatif1 Aug 31, 2026
806848e
fix(v1): run the personal-key group check behind the role check
waleedlatif1 Aug 31, 2026
414302c
fix(audits): close the user-scope gap in check:capability-subject
waleedlatif1 Aug 31, 2026
eb5a07e
test(logs): cover the run-detail, snapshot and @log-mention projections
waleedlatif1 Aug 31, 2026
a51592a
Merge branch 'pgx/p2' into feat/permission-groups-coverage
waleedlatif1 Aug 31, 2026
5b384d7
Merge branch 'pgx/p1' into feat/permission-groups-coverage
waleedlatif1 Aug 31, 2026
f328c91
Merge remote-tracking branch 'origin/staging' into feat/permission-gr…
waleedlatif1 Aug 31, 2026
94a1cc1
feat(permission-groups): declare capabilities on the operations stagi…
waleedlatif1 Aug 31, 2026
ed1e3ca
Merge remote-tracking branch 'origin/staging' into feat/permission-gr…
waleedlatif1 Aug 31, 2026
492018d
feat(permission-groups): declare a capability on the unified selector…
waleedlatif1 Aug 31, 2026
ad07b52
fix(permission-groups): gate copilot.use on the workspace a chat land…
waleedlatif1 Aug 31, 2026
884fbe5
fix(permission-groups): close reactivation and creation gaps in the c…
waleedlatif1 Aug 31, 2026
6cbebf1
fix(permission-groups): exempt retired entry points and normalize all…
waleedlatif1 Aug 31, 2026
4b51925
fix(workflows): judge an import's blocks against the caller's own group
waleedlatif1 Aug 31, 2026
bd0d32d
fix(credentials): assert the personal-credential gate on the branch t…
waleedlatif1 Aug 31, 2026
8b516d9
fix(billing): apply the group's personal-key refusal to workspace bil…
waleedlatif1 Aug 31, 2026
50dc1da
fix(permission-groups): close the spend leaks the log projections lef…
waleedlatif1 Aug 31, 2026
eaf512d
fix(permission-groups): align the resource-level capability sites wit…
waleedlatif1 Aug 31, 2026
3576df4
fix(access-control): correct three affordance and documentation defects
waleedlatif1 Aug 31, 2026
1822355
fix(audits): close two renames that made the graph and subject audits…
waleedlatif1 Aug 31, 2026
3345f27
fix(enrichments): state the actorless dispatch's null subject explicitly
waleedlatif1 Aug 31, 2026
4a3f455
Merge branch 'pgx/r2' into feat/permission-groups-coverage
waleedlatif1 Aug 31, 2026
6eba056
Merge branch 'pgx/r3' into feat/permission-groups-coverage
waleedlatif1 Aug 31, 2026
b719016
Merge branch 'pgx/r4' into feat/permission-groups-coverage
waleedlatif1 Aug 31, 2026
2c2c815
test(v1): teach the import suite's middleware mock the governed-subje…
waleedlatif1 Aug 31, 2026
f9f8b01
Merge remote-tracking branch 'origin/staging' into feat/permission-gr…
waleedlatif1 Sep 1, 2026
bdeb07a
feat(permission-groups): declare a capability on the organization bil…
waleedlatif1 Sep 1, 2026
1a387ed
fix(permission-groups): gate selector execution on allowedIntegration…
waleedlatif1 Sep 1, 2026
45b4bed
fix(permission-groups): key the table-import capability re-check on t…
waleedlatif1 Sep 1, 2026
f73c019
fix(permission-groups): gate table enrichments on the acting person, …
waleedlatif1 Sep 1, 2026
24e5d6b
fix(v1): attribute a workspace-key table delete to the system actor
waleedlatif1 Sep 1, 2026
f47a9e1
fix(permission-groups): carry the capability detail code on the works…
waleedlatif1 Sep 1, 2026
4413130
fix(permission-groups): canonicalize each integration policy before i…
waleedlatif1 Sep 1, 2026
87eb783
docs(skills): chain the permission-group verification commands after …
waleedlatif1 Sep 1, 2026
3398257
fix(access-control): normalize block-type casing before resolving its…
waleedlatif1 Sep 1, 2026
f34dae8
perf(logs): resolve the permission-group config only for cost-selecti…
waleedlatif1 Sep 1, 2026
c1a0602
refactor(permission-groups): name the canonicalize-then-intersect rul…
waleedlatif1 Sep 1, 2026
0b7fc4b
test(permission-groups): pin block-type casing and the stats config-l…
waleedlatif1 Sep 1, 2026
5d0452f
Merge branch 'pgx/s2' into feat/permission-groups-coverage
waleedlatif1 Sep 1, 2026
4ff4ced
docs(db): state the deploy-window semantics of the governed-subject c…
waleedlatif1 Sep 1, 2026
964bb6d
fix(permission-groups): require the governed subject on every table d…
waleedlatif1 Sep 1, 2026
eacf218
fix(permission-groups): stop a deleted account's table runs instead o…
waleedlatif1 Sep 1, 2026
2f8d064
test(permission-groups): pin the governed subject end to end
waleedlatif1 Sep 1, 2026
954db6e
docs(skills): fix two checklist semantics bugs in the permission-grou…
waleedlatif1 Sep 1, 2026
bfd0398
feat(permission-groups): generate the access-control successor map fr…
waleedlatif1 Sep 1, 2026
3b36667
fix(permission-groups): canonicalize both policy layers before inters…
waleedlatif1 Sep 1, 2026
ad317b5
fix(selectors): gate a selector on the resource it reaches, not the c…
waleedlatif1 Sep 1, 2026
6e1b053
refactor(copilot): read the chat capability off its operation declara…
waleedlatif1 Sep 1, 2026
2d20245
fix(api): answer an unresolvable workspace actor and a denied workspa…
waleedlatif1 Sep 1, 2026
bf9cdd7
test(v1): pin the workspace-actor projection
waleedlatif1 Sep 1, 2026
3e30fe3
Merge branch 'pgx/t2' into feat/permission-groups-coverage
waleedlatif1 Sep 1, 2026
e84519e
fix(permission-groups): read the successor map by its own keys only
waleedlatif1 Sep 1, 2026
ee40593
fix(table): govern CSV-import auto-fire by the person the route alrea…
waleedlatif1 Sep 1, 2026
66056ad
fix(access-control): keep superseded blocks out of the editor's allow…
waleedlatif1 Sep 1, 2026
8a3c289
fix(table): carry the acting person into the backfill's downstream ca…
waleedlatif1 Sep 1, 2026
ae8785b
fix(copilot): capture prompt telemetry only once the turn is allowed …
waleedlatif1 Sep 1, 2026
f4768b3
fix(table): stop a queued cell whose dispatch was cancelled
waleedlatif1 Sep 1, 2026
8d29616
fix(selectors): gate raw-context and api-key selectors on their integ…
waleedlatif1 Sep 1, 2026
b028ce6
fix(table): run a drained pre-stamp under the subject that stamped it
waleedlatif1 Sep 1, 2026
78744eb
test(table): pin the governed subject at the import route, the deleti…
waleedlatif1 Sep 1, 2026
77c5cd4
Merge branch 'pgx/u2' into feat/permission-groups-coverage
waleedlatif1 Sep 1, 2026
b8e7f4a
Merge remote-tracking branch 'origin/staging' into feat/permission-gr…
waleedlatif1 Sep 1, 2026
b78516d
Merge remote-tracking branch 'origin/staging' into feat/permission-gr…
waleedlatif1 Sep 1, 2026
f40821e
fix(db): make 0316's pre-COMMIT section replay-safe
waleedlatif1 Sep 1, 2026
a1ded74
fix(table): require the governed subject on the add-output payload
waleedlatif1 Sep 1, 2026
e3052e6
fix(table): derive the CSV import governed subject from the auth type
waleedlatif1 Sep 1, 2026
94482e0
test(background): warm the cascade loop's dynamic imports outside per…
waleedlatif1 Sep 1, 2026
c66c3d6
test(background): pay the cascade loop's whole lazy-import graph in b…
waleedlatif1 Sep 1, 2026
37be5ee
Merge remote-tracking branch 'origin/staging' into feat/permission-gr…
waleedlatif1 Sep 1, 2026
4e60119
refactor(selectors): one home for the selector integration-identity r…
waleedlatif1 Sep 1, 2026
2644515
refactor(permission-groups): drop block-access's re-export of the mov…
waleedlatif1 Sep 1, 2026
c717bb2
docs(permission-groups): one home for the capability-governed subject…
waleedlatif1 Sep 1, 2026
46e619f
refactor(scripts): tidy the permission-group audits
waleedlatif1 Sep 1, 2026
dc54559
docs(skills): re-audit permission-group skills against current code
waleedlatif1 Sep 1, 2026
640daf0
docs(table): one home for the capability-governed payload rule
waleedlatif1 Sep 1, 2026
febcf38
test(harness): share the v1 personal/workspace key credential factories
waleedlatif1 Sep 1, 2026
3080b70
refactor(permission-groups): use the assertions module's own refusal …
waleedlatif1 Sep 1, 2026
e028b04
test(workflows): keep one home for readWorkflowRun selector resolution
waleedlatif1 Sep 1, 2026
409d3e4
test(core): one describe for the defineWorkspaceOperation capability …
waleedlatif1 Sep 1, 2026
5466f9f
test(table): warm the pre-stamp suite's lazy cell-task import
waleedlatif1 Sep 1, 2026
ec36f80
Merge branch 'pgx/f1' into feat/permission-groups-coverage
waleedlatif1 Sep 1, 2026
f454342
Merge branch 'pgx/f2' into feat/permission-groups-coverage
waleedlatif1 Sep 1, 2026
5e612ca
refactor(auth): give the AuthResult capability derivation one home
waleedlatif1 Sep 1, 2026
1c2d19c
chore(permission-groups): apply the surviving comment-pass findings
waleedlatif1 Sep 1, 2026
84db557
fix(db): give 0315/0316 real transaction boundaries under the batchin…
waleedlatif1 Sep 1, 2026
200094b
audit(capability-subject): refuse a fallback welded to the governed s…
waleedlatif1 Sep 1, 2026
a3f99ec
fix(logs): withhold a run's file list on the same terms as its output
waleedlatif1 Sep 1, 2026
0b32b6c
fix(permission-groups): fail closed when the entitlement read fails
waleedlatif1 Sep 1, 2026
a50a5e8
test(permission-groups): cover the fail-closed entitlement policy
waleedlatif1 Sep 1, 2026
e785340
docs(logs): state why logs.export has no admin exemption, and pin it
waleedlatif1 Sep 1, 2026
ebe281d
audit(application-graph): report a deferred import into a forbidden tree
waleedlatif1 Sep 1, 2026
f750e15
fix(billing): gate the account-scoped read on personal_api_key.use
waleedlatif1 Sep 1, 2026
3f183ba
audit(permission-groups): refuse a factory that admits a Partial oper…
waleedlatif1 Sep 1, 2026
eaf2979
docs(table): state the gate-vs-dispatch subject model once
waleedlatif1 Sep 1, 2026
8e0400f
feat(access-control): mark organization-scoped keys and render them i…
waleedlatif1 Sep 1, 2026
e8af77c
Merge branch 'pgx/g5' into feat/permission-groups-coverage
waleedlatif1 Sep 1, 2026
559af5a
fix(table): carry the governed subject across a cell pause
waleedlatif1 Sep 1, 2026
8a2783c
refactor(chat): take the v2 refusal detail code off the capability rule
waleedlatif1 Sep 1, 2026
655768b
fix(workflows): enforce the block allowlist on the shared persistence…
waleedlatif1 Sep 1, 2026
23cd90f
fix(table): gate the workflow half of a cell on its governed subject,…
waleedlatif1 Sep 1, 2026
03947ae
fix(invitations): gate resend on invitations.send
waleedlatif1 Sep 1, 2026
21b8324
fix(api-keys): gate the workspace key rename on api_keys.manage
waleedlatif1 Sep 1, 2026
2d2f63b
fix(users): stop the deleted account's pre-stamped cell markers too
waleedlatif1 Sep 1, 2026
3d33f4e
refactor(logs): require the projection flags on the shared log reads
waleedlatif1 Sep 1, 2026
eaef573
Merge branch 'pgx/g3' into feat/permission-groups-coverage
waleedlatif1 Sep 1, 2026
fefb852
fix(mcp): gate every raw MCP management route on its declared capability
waleedlatif1 Sep 1, 2026
7b737b4
Merge branch 'pgx/g4' into feat/permission-groups-coverage
waleedlatif1 Sep 1, 2026
a071fdd
Merge branch 'pgx/g2' into feat/permission-groups-coverage
waleedlatif1 Sep 1, 2026
5052c9a
docs(permission-groups): record the data-drain policy and make the co…
waleedlatif1 Sep 1, 2026
64fb148
test(v1): pin the persistence primitive's governance argument on import
waleedlatif1 Sep 1, 2026
f15e07e
fix(permission-groups): render the raw inbox and table export refusal…
waleedlatif1 Sep 1, 2026
3767418
fix(operations): carve the principal-wide capability out of the opera…
waleedlatif1 Sep 1, 2026
7f8f73b
fix(contracts): treat a null numeric query value as omitted, not zero
waleedlatif1 Sep 1, 2026
8961750
docs(v1): name the explicit capability declaration in the exemption c…
waleedlatif1 Sep 1, 2026
ddec387
fix(v1/logs): keep the group refusal's detail, project period spend, …
waleedlatif1 Sep 1, 2026
7cf6d69
fix(api-keys): seed the create-key form when the modal opens, not at …
waleedlatif1 Sep 1, 2026
37237c3
fix(capabilities): gate the raw table and webhook routes on the gover…
waleedlatif1 Sep 1, 2026
0ca6715
fix(copilot): read a failed auto-approval lookup as withheld, not as …
waleedlatif1 Sep 1, 2026
808489e
fix(knowledge): gate a manual connector sync on the persisted connect…
waleedlatif1 Sep 1, 2026
f3a36cc
fix(credentials): project the user-global membership listing per cred…
waleedlatif1 Sep 1, 2026
8db3684
fix(invitations): check the organization scope on an organization-kin…
waleedlatif1 Sep 1, 2026
e251159
fix(logs): decide every log projection about the governed subject
waleedlatif1 Sep 1, 2026
524d816
fix(logs): stop the migration erasing legacy runs' token counts
waleedlatif1 Sep 1, 2026
59d14cd
test: cover the converged refusals, the log projections, and the moda…
waleedlatif1 Sep 1, 2026
029c4b2
Merge branch 'pgx/h3' into feat/permission-groups-coverage
waleedlatif1 Sep 1, 2026
3661860
fix(executor): keep the gate subject across pause, drain and the run …
waleedlatif1 Sep 1, 2026
d9228a4
fix(users): close the pre-stamp race in account deletion, and announc…
waleedlatif1 Sep 1, 2026
92cc06c
docs(table): state the backfill legacy-payload tradeoff honestly
waleedlatif1 Sep 1, 2026
f143f51
Merge branch 'pgx/h1' into feat/permission-groups-coverage
waleedlatif1 Sep 1, 2026
833aa54
fix(invitations): gate the resend on what the invitation admits to, n…
waleedlatif1 Sep 1, 2026
0a33b64
fix(table): key the export-download gate to the governed subject
waleedlatif1 Sep 1, 2026
fffab50
fix(logs): stop the completion write persisting per-segment dollars
waleedlatif1 Sep 1, 2026
798148d
Merge remote-tracking branch 'origin/staging' into feat/permission-gr…
waleedlatif1 Sep 1, 2026
d53b621
style: restore biome 2.0.6 formatting the merge reverted
waleedlatif1 Sep 1, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
274 changes: 274 additions & 0 deletions .agents/skills/add-permission-group-item/SKILL.md

Large diffs are not rendered by default.

157 changes: 157 additions & 0 deletions .agents/skills/validate-permission-group-item/SKILL.md

Large diffs are not rendered by default.

1 change: 1 addition & 0 deletions .claude/skills/add-permission-group-item
1 change: 1 addition & 0 deletions .claude/skills/validate-permission-group-item
2 changes: 1 addition & 1 deletion apps/docs/openapi-v2-billing.json
Original file line number Diff line number Diff line change
Expand Up @@ -452,7 +452,7 @@
"description": "Human-readable explanation of the error."
},
"details": {
"description": "Structured error details. On a `403` whose cause a caller can act on, this carries a `code` from a closed set:\n- `INSUFFICIENT_WORKSPACE_ROLE` — The caller has access to the workspace but its role is below the one this operation requires.\n- `PERSONAL_API_KEYS_DISABLED` — The workspace's organization does not allow personal API keys. Use a workspace API key.\n- `WORKSPACE_KEY_OPERATION_NOT_PERMITTED` — This operation is not available to a workspace-scoped API key. Use a personal API key.\n- `PRINCIPAL_KIND_NOT_PERMITTED` — This operation does not accept the caller’s kind of API key.\n- `ORGANIZATION_MEMBERSHIP_REQUIRED` — The caller is not a member of the organization it named.\n- `ORGANIZATION_ADMIN_REQUIRED` — The caller is a member of the organization but not an admin or owner.\n- `ENTERPRISE_PLAN_REQUIRED` — The organization has no active enterprise subscription.\n- `ORGANIZATION_PLAN_REQUIRED` — The organization has no active organization subscription (Pro for Teams, Max for Teams, or Enterprise).\n- `AUDIT_LOGS_DISABLED` — Audit logging is not enabled for this deployment.\n- `SKILL_EDITOR_ACCESS_REQUIRED` — The caller can write in the workspace but is not an editor of this skill.\n- `SECRET_ADMIN_ACCESS_REQUIRED` — The caller can write in the workspace but is not an admin of this secret. Ask a workspace admin, or someone holding admin on the secret, to grant access or set the value.\n- `WORKSPACE_RESOURCE_LIMIT_REACHED` — The workspace already holds the maximum number of resources of this kind. Delete one, or contact Sim to raise the limit; the message names the ceiling.\n- `PUBLIC_SHARING_NOT_ALLOWED` — The workspace's organization does not permit sharing this resource publicly. An organization admin controls the policy.\n- `CREDENTIAL_ADMIN_ACCESS_REQUIRED` — The caller can reach the workspace but cannot administer this credential.\n- `MCP_SERVER_URL_NOT_ALLOWED` — The supplied MCP server URL is outside the allowed domains or resolves to an internal address.\n- `WORKSPACE_PLAN_CAPABILITY_REQUIRED` — The workspace's plan does not include a capability this request depends on. The message names the capability; upgrading the workspace's plan is the remedy.\n- `CHAT_AUTH_MODE_NOT_PERMITTED` — The workspace's permission group does not allow the chat authentication mode the request selected. A mode already saved on the deployment may still be re-saved; changing to a disallowed one cannot.\n- `CONNECTOR_MANAGED_RESOURCE_READ_ONLY` — This resource is managed by a knowledge base connector and cannot be edited directly. Change it at the source and re-sync, or exclude the document from the connector."
"description": "Structured error details. On a `403` whose cause a caller can act on, this carries a `code` from a closed set:\n- `INSUFFICIENT_WORKSPACE_ROLE` — The caller has access to the workspace but its role is below the one this operation requires.\n- `PERSONAL_API_KEYS_DISABLED` — The workspace's organization does not allow personal API keys. Use a workspace API key.\n- `WORKSPACE_KEY_OPERATION_NOT_PERMITTED` — This operation is not available to a workspace-scoped API key. Use a personal API key.\n- `PRINCIPAL_KIND_NOT_PERMITTED` — This operation does not accept the caller’s kind of API key.\n- `ORGANIZATION_MEMBERSHIP_REQUIRED` — The caller is not a member of the organization it named.\n- `ORGANIZATION_ADMIN_REQUIRED` — The caller is a member of the organization but not an admin or owner.\n- `ENTERPRISE_PLAN_REQUIRED` — The organization has no active enterprise subscription.\n- `ORGANIZATION_PLAN_REQUIRED` — The organization has no active organization subscription (Pro for Teams, Max for Teams, or Enterprise).\n- `AUDIT_LOGS_DISABLED` — Audit logging is not enabled for this deployment.\n- `SKILL_EDITOR_ACCESS_REQUIRED` — The caller can write in the workspace but is not an editor of this skill.\n- `SECRET_ADMIN_ACCESS_REQUIRED` — The caller can write in the workspace but is not an admin of this secret. Ask a workspace admin, or someone holding admin on the secret, to grant access or set the value.\n- `WORKSPACE_RESOURCE_LIMIT_REACHED` — The workspace already holds the maximum number of resources of this kind. Delete one, or contact Sim to raise the limit; the message names the ceiling.\n- `PUBLIC_SHARING_NOT_ALLOWED` — The workspace's organization does not permit sharing this resource publicly. An organization admin controls the policy.\n- `CREDENTIAL_ADMIN_ACCESS_REQUIRED` — The caller can reach the workspace but cannot administer this credential.\n- `MCP_SERVER_URL_NOT_ALLOWED` — The supplied MCP server URL is outside the allowed domains or resolves to an internal address.\n- `WORKSPACE_PLAN_CAPABILITY_REQUIRED` — The workspace's plan does not include a capability this request depends on. The message names the capability; upgrading the workspace's plan is the remedy.\n- `CHAT_AUTH_MODE_NOT_PERMITTED` — The workspace's permission group does not allow the chat authentication mode the request selected. A mode already saved on the deployment may still be re-saved; changing to a disallowed one cannot.\n- `CONNECTOR_MANAGED_RESOURCE_READ_ONLY` — This resource is managed by a knowledge base connector and cannot be edited directly. Change it at the source and re-sync, or exclude the document from the connector.\n- `PERMISSION_GROUP_CAPABILITY_BLOCKED` — The caller's permission group does not allow this capability. The message names it; an organization admin controls the group."
}
},
"required": ["code", "message"],
Expand Down
2 changes: 1 addition & 1 deletion apps/docs/openapi-v2-files-audit.json
Original file line number Diff line number Diff line change
Expand Up @@ -2793,7 +2793,7 @@
"description": "Human-readable explanation of the error."
},
"details": {
"description": "Structured error details. On a `403` whose cause a caller can act on, this carries a `code` from a closed set:\n- `INSUFFICIENT_WORKSPACE_ROLE` — The caller has access to the workspace but its role is below the one this operation requires.\n- `PERSONAL_API_KEYS_DISABLED` — The workspace's organization does not allow personal API keys. Use a workspace API key.\n- `WORKSPACE_KEY_OPERATION_NOT_PERMITTED` — This operation is not available to a workspace-scoped API key. Use a personal API key.\n- `PRINCIPAL_KIND_NOT_PERMITTED` — This operation does not accept the caller’s kind of API key.\n- `ORGANIZATION_MEMBERSHIP_REQUIRED` — The caller is not a member of the organization it named.\n- `ORGANIZATION_ADMIN_REQUIRED` — The caller is a member of the organization but not an admin or owner.\n- `ENTERPRISE_PLAN_REQUIRED` — The organization has no active enterprise subscription.\n- `ORGANIZATION_PLAN_REQUIRED` — The organization has no active organization subscription (Pro for Teams, Max for Teams, or Enterprise).\n- `AUDIT_LOGS_DISABLED` — Audit logging is not enabled for this deployment.\n- `SKILL_EDITOR_ACCESS_REQUIRED` — The caller can write in the workspace but is not an editor of this skill.\n- `SECRET_ADMIN_ACCESS_REQUIRED` — The caller can write in the workspace but is not an admin of this secret. Ask a workspace admin, or someone holding admin on the secret, to grant access or set the value.\n- `WORKSPACE_RESOURCE_LIMIT_REACHED` — The workspace already holds the maximum number of resources of this kind. Delete one, or contact Sim to raise the limit; the message names the ceiling.\n- `PUBLIC_SHARING_NOT_ALLOWED` — The workspace's organization does not permit sharing this resource publicly. An organization admin controls the policy.\n- `CREDENTIAL_ADMIN_ACCESS_REQUIRED` — The caller can reach the workspace but cannot administer this credential.\n- `MCP_SERVER_URL_NOT_ALLOWED` — The supplied MCP server URL is outside the allowed domains or resolves to an internal address.\n- `WORKSPACE_PLAN_CAPABILITY_REQUIRED` — The workspace's plan does not include a capability this request depends on. The message names the capability; upgrading the workspace's plan is the remedy.\n- `CHAT_AUTH_MODE_NOT_PERMITTED` — The workspace's permission group does not allow the chat authentication mode the request selected. A mode already saved on the deployment may still be re-saved; changing to a disallowed one cannot.\n- `CONNECTOR_MANAGED_RESOURCE_READ_ONLY` — This resource is managed by a knowledge base connector and cannot be edited directly. Change it at the source and re-sync, or exclude the document from the connector."
"description": "Structured error details. On a `403` whose cause a caller can act on, this carries a `code` from a closed set:\n- `INSUFFICIENT_WORKSPACE_ROLE` — The caller has access to the workspace but its role is below the one this operation requires.\n- `PERSONAL_API_KEYS_DISABLED` — The workspace's organization does not allow personal API keys. Use a workspace API key.\n- `WORKSPACE_KEY_OPERATION_NOT_PERMITTED` — This operation is not available to a workspace-scoped API key. Use a personal API key.\n- `PRINCIPAL_KIND_NOT_PERMITTED` — This operation does not accept the caller’s kind of API key.\n- `ORGANIZATION_MEMBERSHIP_REQUIRED` — The caller is not a member of the organization it named.\n- `ORGANIZATION_ADMIN_REQUIRED` — The caller is a member of the organization but not an admin or owner.\n- `ENTERPRISE_PLAN_REQUIRED` — The organization has no active enterprise subscription.\n- `ORGANIZATION_PLAN_REQUIRED` — The organization has no active organization subscription (Pro for Teams, Max for Teams, or Enterprise).\n- `AUDIT_LOGS_DISABLED` — Audit logging is not enabled for this deployment.\n- `SKILL_EDITOR_ACCESS_REQUIRED` — The caller can write in the workspace but is not an editor of this skill.\n- `SECRET_ADMIN_ACCESS_REQUIRED` — The caller can write in the workspace but is not an admin of this secret. Ask a workspace admin, or someone holding admin on the secret, to grant access or set the value.\n- `WORKSPACE_RESOURCE_LIMIT_REACHED` — The workspace already holds the maximum number of resources of this kind. Delete one, or contact Sim to raise the limit; the message names the ceiling.\n- `PUBLIC_SHARING_NOT_ALLOWED` — The workspace's organization does not permit sharing this resource publicly. An organization admin controls the policy.\n- `CREDENTIAL_ADMIN_ACCESS_REQUIRED` — The caller can reach the workspace but cannot administer this credential.\n- `MCP_SERVER_URL_NOT_ALLOWED` — The supplied MCP server URL is outside the allowed domains or resolves to an internal address.\n- `WORKSPACE_PLAN_CAPABILITY_REQUIRED` — The workspace's plan does not include a capability this request depends on. The message names the capability; upgrading the workspace's plan is the remedy.\n- `CHAT_AUTH_MODE_NOT_PERMITTED` — The workspace's permission group does not allow the chat authentication mode the request selected. A mode already saved on the deployment may still be re-saved; changing to a disallowed one cannot.\n- `CONNECTOR_MANAGED_RESOURCE_READ_ONLY` — This resource is managed by a knowledge base connector and cannot be edited directly. Change it at the source and re-sync, or exclude the document from the connector.\n- `PERMISSION_GROUP_CAPABILITY_BLOCKED` — The caller's permission group does not allow this capability. The message names it; an organization admin controls the group."
}
},
"required": ["code", "message"],
Expand Down
2 changes: 1 addition & 1 deletion apps/docs/openapi-v2-knowledge.json
Original file line number Diff line number Diff line change
Expand Up @@ -4499,7 +4499,7 @@
"description": "Human-readable explanation of the error."
},
"details": {
"description": "Structured error details. On a `403` whose cause a caller can act on, this carries a `code` from a closed set:\n- `INSUFFICIENT_WORKSPACE_ROLE` — The caller has access to the workspace but its role is below the one this operation requires.\n- `PERSONAL_API_KEYS_DISABLED` — The workspace's organization does not allow personal API keys. Use a workspace API key.\n- `WORKSPACE_KEY_OPERATION_NOT_PERMITTED` — This operation is not available to a workspace-scoped API key. Use a personal API key.\n- `PRINCIPAL_KIND_NOT_PERMITTED` — This operation does not accept the caller’s kind of API key.\n- `ORGANIZATION_MEMBERSHIP_REQUIRED` — The caller is not a member of the organization it named.\n- `ORGANIZATION_ADMIN_REQUIRED` — The caller is a member of the organization but not an admin or owner.\n- `ENTERPRISE_PLAN_REQUIRED` — The organization has no active enterprise subscription.\n- `ORGANIZATION_PLAN_REQUIRED` — The organization has no active organization subscription (Pro for Teams, Max for Teams, or Enterprise).\n- `AUDIT_LOGS_DISABLED` — Audit logging is not enabled for this deployment.\n- `SKILL_EDITOR_ACCESS_REQUIRED` — The caller can write in the workspace but is not an editor of this skill.\n- `SECRET_ADMIN_ACCESS_REQUIRED` — The caller can write in the workspace but is not an admin of this secret. Ask a workspace admin, or someone holding admin on the secret, to grant access or set the value.\n- `WORKSPACE_RESOURCE_LIMIT_REACHED` — The workspace already holds the maximum number of resources of this kind. Delete one, or contact Sim to raise the limit; the message names the ceiling.\n- `PUBLIC_SHARING_NOT_ALLOWED` — The workspace's organization does not permit sharing this resource publicly. An organization admin controls the policy.\n- `CREDENTIAL_ADMIN_ACCESS_REQUIRED` — The caller can reach the workspace but cannot administer this credential.\n- `MCP_SERVER_URL_NOT_ALLOWED` — The supplied MCP server URL is outside the allowed domains or resolves to an internal address.\n- `WORKSPACE_PLAN_CAPABILITY_REQUIRED` — The workspace's plan does not include a capability this request depends on. The message names the capability; upgrading the workspace's plan is the remedy.\n- `CHAT_AUTH_MODE_NOT_PERMITTED` — The workspace's permission group does not allow the chat authentication mode the request selected. A mode already saved on the deployment may still be re-saved; changing to a disallowed one cannot.\n- `CONNECTOR_MANAGED_RESOURCE_READ_ONLY` — This resource is managed by a knowledge base connector and cannot be edited directly. Change it at the source and re-sync, or exclude the document from the connector."
"description": "Structured error details. On a `403` whose cause a caller can act on, this carries a `code` from a closed set:\n- `INSUFFICIENT_WORKSPACE_ROLE` — The caller has access to the workspace but its role is below the one this operation requires.\n- `PERSONAL_API_KEYS_DISABLED` — The workspace's organization does not allow personal API keys. Use a workspace API key.\n- `WORKSPACE_KEY_OPERATION_NOT_PERMITTED` — This operation is not available to a workspace-scoped API key. Use a personal API key.\n- `PRINCIPAL_KIND_NOT_PERMITTED` — This operation does not accept the caller’s kind of API key.\n- `ORGANIZATION_MEMBERSHIP_REQUIRED` — The caller is not a member of the organization it named.\n- `ORGANIZATION_ADMIN_REQUIRED` — The caller is a member of the organization but not an admin or owner.\n- `ENTERPRISE_PLAN_REQUIRED` — The organization has no active enterprise subscription.\n- `ORGANIZATION_PLAN_REQUIRED` — The organization has no active organization subscription (Pro for Teams, Max for Teams, or Enterprise).\n- `AUDIT_LOGS_DISABLED` — Audit logging is not enabled for this deployment.\n- `SKILL_EDITOR_ACCESS_REQUIRED` — The caller can write in the workspace but is not an editor of this skill.\n- `SECRET_ADMIN_ACCESS_REQUIRED` — The caller can write in the workspace but is not an admin of this secret. Ask a workspace admin, or someone holding admin on the secret, to grant access or set the value.\n- `WORKSPACE_RESOURCE_LIMIT_REACHED` — The workspace already holds the maximum number of resources of this kind. Delete one, or contact Sim to raise the limit; the message names the ceiling.\n- `PUBLIC_SHARING_NOT_ALLOWED` — The workspace's organization does not permit sharing this resource publicly. An organization admin controls the policy.\n- `CREDENTIAL_ADMIN_ACCESS_REQUIRED` — The caller can reach the workspace but cannot administer this credential.\n- `MCP_SERVER_URL_NOT_ALLOWED` — The supplied MCP server URL is outside the allowed domains or resolves to an internal address.\n- `WORKSPACE_PLAN_CAPABILITY_REQUIRED` — The workspace's plan does not include a capability this request depends on. The message names the capability; upgrading the workspace's plan is the remedy.\n- `CHAT_AUTH_MODE_NOT_PERMITTED` — The workspace's permission group does not allow the chat authentication mode the request selected. A mode already saved on the deployment may still be re-saved; changing to a disallowed one cannot.\n- `CONNECTOR_MANAGED_RESOURCE_READ_ONLY` — This resource is managed by a knowledge base connector and cannot be edited directly. Change it at the source and re-sync, or exclude the document from the connector.\n- `PERMISSION_GROUP_CAPABILITY_BLOCKED` — The caller's permission group does not allow this capability. The message names it; an organization admin controls the group."
}
},
"required": ["code", "message"],
Expand Down
Loading
Loading