Skip to content

sessionhost/agentd: 起動直前の effective identity × namespace boundary 突合(ADR-DOE-AGENTS-003 の値整合版拡張) #570

Description

@proboscis

発注元

ACP operator-queue item subject=responsibility:binding-steward(2026-07-28 発)への operator 裁定 2026-07-29。相談席 = decide-binding-boundary-gate(ACP 側 artifact: decision-binding-boundary-prelaunch-gate-20260729.html)。

問題

namespace はアカウント境界(ACP ADR 0039 R3)だが、起動する session の実効 identity(CLAUDE_CONFIG_DIR / CODEX_HOME の実値)が当該 namespace の境界と整合するかを起動前に検査する層がどこにも無い

  • 既存 gate = ADR-DOE-AGENTS-003: 明示 CODEX_HOME を欠く codex 起動の拒否 — 「明示されていること」のみで値の整合は関知しない
  • ACP 側は宣言面の gate を強化中(ADR 0068 stage 3「境界法の engine 昇格」— ACP issue adr-0068-stage3-boundary-engine-promotion、frontier+human lane)。ただし engine 側検査は宣言と規則の面であり、「宣言は正しいのに実行だけが漏れる」型(2026-07-01 の proboscis-ema 越境事故と同型)は launch 側でしか止められない。
  • 現状この面の検出は事後のみ: ACP の binding_compliance sensor が live invocation の effective_identity_json を走査(attend 周期任せ・履歴に及ばない)。

提案(設計の骨子 — mechanism/policy 分離)

  • policy は ACP が所有: launch spec に境界制約(期待 boundary alias / 期待 config dir / forbiddenIdentitySubstrings)を同乗させる。agentd/sessionhost は値を解釈せず「渡された制約と実効値の突合」だけを行う(ADR-DOE-AGENTS-003 と同じ層所有)。
  • 検査時点 = spawn 直前: 合成後の実効 env(CLAUDE_CONFIG_DIR / CODEX_HOME、symlink 解決後の実パス)を制約と突合し、不一致は loud な launch failure(silent fallback・黙殺禁止)。structured launch error で ACP 側へ返し、ACP が condition 化できる形にする。
  • 制約が同乗しない launch は現行意味論を維持(fail-open か fail-closed かは本 lane の設計判断 — ACP 0068 stage 3 の fail-closed 意味論と整合を取ること)。

担当の希望

sessionhost lane(発端 item の判断では正規 owner = sessionhost-steward)。ACP 側 stage 3 lane と規則正本(binding-rules.json)の形を揃えるため、着手前に ACP issue adr-0068-stage3-boundary-engine-promotion の設計と突き合わせること。

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions