Skip to content

runtime: exec children lose the runtime credentials, the panel gets its write token - #15

Merged
cpoder merged 1 commit into
masterfrom
fix/after-0.5.0
Nov 7, 2026
Merged

cpoder merged 1 commit into
masterfrom
fix/after-0.5.0

Conversation

@cpoder

@cpoder cpoder commented Nov 7, 2026

Copy link
Copy Markdown
Owner

What remained open after v0.5.0. This becomes v0.5.1.

  • Exec children lose the runtime's credentials. sh -c children and the agent CLI inherited VEJAS_APPROVAL_TOKEN, VEJAS_TOKEN, VAULT_TOKEN and every VEJAS_SECRET_*. They now get what the manifest declares in ENV. No recipe in the repo reads one by inheritance. Hygiene, not a sandbox: an exec connector is trusted code, runs as the same user and reaches the same bus.
  • The panel can write with VEJAS_TOKEN set. Only Approve and Reject worked: every other write got a 401, with no way to give the token. It asks once and keeps it in the page's memory.
  • http-in writes its response in one segment, and two bench scripts stop leaking the runtime and NATS.
  • Release path. scripts/deploy-docs.sh publishes the book from a commit, never the working tree, and RELEASING.md gains the step: the book sat on 2026-08-24 through nine releases. It stays manual on purpose: CI would need an SSH key for a box shared with production. Master is pushed first and the tag comes once CI is green. Backups leave the served directory.
  • Stale numbers in the comparison and the launch kit, and the MCP tool count, which depends on what is installed.

Verified locally: 56 unit tests, 22 golden cases, 50 scripts parse-checked, ten e2e suites including governed-agent, which now checks the child's environment. In a real browser: a panel write and a replay with VEJAS_TOKEN alone, then a replay in governed mode with both tokens. bench/flow-only.sh leaves no process behind.

🤖 Generated with Claude Code

https://claude.ai/code/session_018wXgxT2UoFSZfqhAE1Tb5V

… its write token

Exec children and the agent CLI inherited VEJAS_APPROVAL_TOKEN, VEJAS_TOKEN,
VAULT_TOKEN and every VEJAS_SECRET_*. They now get what the manifest declares in
ENV. This is hygiene and not a sandbox: an exec connector is trusted code, it runs
as the same user and reaches the same bus. It stops an `env` in a log, or an agent
reading its environment, from sending the approval token on.

With VEJAS_TOKEN set the panel could only approve: every other write got a 401,
with no way to give the token, though the audit scope presents the panel as the
operator's. It asks once and keeps the token in the page's memory.

Smaller: http-in writes its response in one segment, and bench/flow-only.sh and
bench/detect.sh stop leaving the runtime and NATS behind, since under set -e the
status of the first killed process ended the trap.

The release path: scripts/deploy-docs.sh publishes the book from a commit, never
from the working tree, and RELEASING.md gains that step, after the book sat on
2026-08-24 through nine releases. It stays manual, since CI would need an SSH key
for a box shared with production. A release now pushes master first and tags once
CI is green. Backups leave the served directory, where a page carrying a claim
corrected a month ago was still reachable.

Stale numbers go: 118 MB, 11.2 MB and 10 MB in the comparison and the launch kit,
and the count of MCP tools, which depends on what is installed.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_018wXgxT2UoFSZfqhAE1Tb5V
@cpoder
cpoder merged commit e44cc5d into master Nov 7, 2026
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant