Harden transports and state files

- Executors and relay helpers get an environment without any configured
  Plane token / webhook secret (design 8: executors hold no Plane credentials).
- Windows runner: Set-Location -LiteralPath, and a failed cd writes exit=97
  instead of running the agent in the wrong directory.
- schtasks launch: escape apostrophes and pass the script path as \"...\" so
  paths with spaces survive PowerShell 5.1 native quoting.
- State and heartbeat files are written temp + fsync + rename.
- Tests for the above plus codex run/resume command shapes and unique run dirs.
This commit is contained in:
jj.wang
2026-10-21 07:10:41 +00:00
parent 08e3a7cc55
commit 00d42267e5
5 changed files with 163 additions and 14 deletions
+11
View File
@@ -157,6 +157,17 @@ class Config:
def token(self, terminal):
return os.environ.get(self.token_env(terminal))
def secret_keys(self):
"""Every env var name that carries a secret (Plane tokens, webhook secrets): never handed to executors."""
keys = {t["token_key"] for t in self.terminals.values()}
keys |= {p["webhook_secret_key"] for p in self.projects.values() if p.get("webhook_secret_key")}
return keys
def scrubbed_env(self):
"""os.environ without the secrets above, for every child process agentd starts."""
drop = self.secret_keys()
return {k: v for k, v in os.environ.items() if k not in drop}
def secret_env_args(self):
"""`--secret-env` arguments for agent-access.py exec, one per distinct token key."""
keys = sorted({t["token_key"] for t in self.terminals.values()})