Found during the new-developer first-run journey audit, #10264. Ranked there second by likelihood of losing a stranger — and first among the strangers we can least afford to lose, because this is exactly what a serious enterprise evaluator tries.
The shape of it
definePermissionSet is covered well. The audit's dev authored RBAC bits, an RLS policy and the CEL grammar straight from skills/objectstack-data, first try. Then it tried to prove the deny — two users, exercise the matrix — and hit a wall:
Assigning a permission set to a user is absent from all 11 skills in the bundle.
Getting through took roughly six minutes of pure guessing, in three stages:
- Brute-force probing six candidate object names before landing on
sys_user_permission_set.
- Submitting wrong field names until an error disclosed
permission_set_id.
- A third error to learn that field wants the record id, not the
name.
No gate was involved at any point. Nothing failed loudly; there was simply nothing to read.
What makes it worse than a doc gap
sys_user_permission_set is not exposed over MCP — "is a system object and is not exposed via MCP" — so the app's own AI surface cannot discover it either. The product's answer to "ask the agent" does not work here.
The net effect: every skill teaches you to build a fence, and none tells you how to put anyone behind it.
Why this one is expensive
Anyone evaluating ObjectStack for real enterprise use will do what the audit did — two users, prove the deny — because that is how you check whether a permission story is real. They will author the set in five minutes from the skill, then stall with no documented way forward. The audit verified the enforcement itself is genuinely correct in both directions (see #10264 stage 4), which makes this a pure own-goal: the capability works and the path to exercising it is undocumented.
Suggested landing (hint for triage, not a routing decision)
skills/objectstack-data/SKILL.md security section, or skills/objectstack-platform/. The MCP exposure question is a separate call and may deserve its own card.
Filed by the PM loop from the audit in #10264. Not yet graded or routed.
Found during the new-developer first-run journey audit, #10264. Ranked there second by likelihood of losing a stranger — and first among the strangers we can least afford to lose, because this is exactly what a serious enterprise evaluator tries.
The shape of it
definePermissionSetis covered well. The audit's dev authored RBAC bits, an RLS policy and the CEL grammar straight fromskills/objectstack-data, first try. Then it tried to prove the deny — two users, exercise the matrix — and hit a wall:Assigning a permission set to a user is absent from all 11 skills in the bundle.
Getting through took roughly six minutes of pure guessing, in three stages:
sys_user_permission_set.permission_set_id.name.No gate was involved at any point. Nothing failed loudly; there was simply nothing to read.
What makes it worse than a doc gap
sys_user_permission_setis not exposed over MCP —"is a system object and is not exposed via MCP"— so the app's own AI surface cannot discover it either. The product's answer to "ask the agent" does not work here.The net effect: every skill teaches you to build a fence, and none tells you how to put anyone behind it.
Why this one is expensive
Anyone evaluating ObjectStack for real enterprise use will do what the audit did — two users, prove the deny — because that is how you check whether a permission story is real. They will author the set in five minutes from the skill, then stall with no documented way forward. The audit verified the enforcement itself is genuinely correct in both directions (see #10264 stage 4), which makes this a pure own-goal: the capability works and the path to exercising it is undocumented.
Suggested landing (hint for triage, not a routing decision)
skills/objectstack-data/SKILL.mdsecurity section, orskills/objectstack-platform/. The MCP exposure question is a separate call and may deserve its own card.Filed by the PM loop from the audit in #10264. Not yet graded or routed.