sec(door): closed by default, governor fails closed; self-authoring off by default
deploy / test (push) Successful in 5m15s
deploy / build (push) Successful in 5m28s

Three fail-open paths on the §15 door: no env at all meant allow-all; a
governor that could not be reached approved with a WARNING; and a reply
that never said DENY — empty, truncated, a refusal — approved, because the
rule was !contains("DENY"). On the two days the judge plan emptied every
outbound action was approved by nobody.

Now: governor_allows() needs an explicit ALLOW and no DENY; both judge()
implementations return false when unreachable; with no governor the door
opens only on CLAWMATES_DOOR_POLICY=allow. Open Agent Passport (arXiv
2603.20953): 74.6% social-engineering success under a permissive policy,
0 of 879 under a restrictive one. Local override gains the governor prod
already runs.

skill_self_authoring: default flipped to OFF. No agent-authored skill has
ever been delivered to a mission or scored; prod held zero proposals.
Enable with CLAWMATES_SKILL_SELF_AUTHORING=1 once promoted skills go
through the files arm and get a Skill-Use score.

Co-Authored-By: Claude Opus 5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01WZb5A2kfVfjpdwSochkuHz
This commit is contained in:
Omar Sobh
2026-09-20 22:07:39 -05:00
co-authored by Claude Opus 5
parent 9b7680a605
commit 76ac3714f1
8 changed files with 157 additions and 45 deletions
+7 -5
View File
@@ -2,8 +2,9 @@
//!
//! `level_up` has generated complete skill drafts from a model since it
//! shipped; the only thing between a draft and the catalogue was an operator
//! ticking a checkbox in `LevelUpDrawer`. This worker removes the checkbox, by
//! operator decision.
//! ticking a checkbox in `LevelUpDrawer`. This worker removes the checkbox
//! when switched on. It is OFF by default since 2026-09-20; see
//! `level_up::self_authoring_enabled` for why.
//!
//! What is deliberately NOT removed is the record. Every write stays
//! workspace-scoped and versioned, cannot take the name of a hand-authored
@@ -29,8 +30,9 @@ const SWEEP_INTERVAL: Duration = Duration::from_secs(120);
pub fn spawn(pool: PgPool) {
if !crate::level_up::self_authoring_enabled() {
eprintln!(
"skill_self_authoring: DISABLED (CLAWMATES_SKILL_SELF_AUTHORING) — \
agent skill drafts wait for a human in the level-up drawer"
"skill_self_authoring: DISABLED (the default since 2026-09-20) — \
agent skill drafts wait for a human in the level-up drawer. \
Set CLAWMATES_SKILL_SELF_AUTHORING=1 to let agents apply their own."
);
return;
}
@@ -38,7 +40,7 @@ pub fn spawn(pool: PgPool) {
"skill_self_authoring: ENABLED — agents apply their own skill drafts \
without human approval. Writes are workspace-scoped, versioned, and \
cannot take a hand-authored skill's name; each lands with no approver \
recorded. Set CLAWMATES_SKILL_SELF_AUTHORING=0 to restore the gate."
recorded. Unset CLAWMATES_SKILL_SELF_AUTHORING to restore the gate."
);
tokio::spawn(async move {
loop {