security: complete local access protections

This commit is contained in:
Rohit P
2026-07-24 18:44:39 -07:00
parent 3f5ac872ca
commit ac83bc0490
20 changed files with 361 additions and 32 deletions
+25 -8
View File
@@ -4,12 +4,13 @@ from __future__ import annotations
import argparse
import os
import secrets
import sys
from pathlib import Path
from ..config import load_config
from ..permissions import Mode
from ..secrets import state_dir
from ..secrets import state_dir, write_private_text
from .app import _WS_MAX_FRAME_BYTES, create_app
from .manager import SessionManager
@@ -124,6 +125,17 @@ def _ensure_ca_bundle() -> None:
pass
def _ensure_api_token(port: int) -> Path | None:
"""Set launch auth; standalone/dev tokens use a user-only, port-specific file."""
if os.environ.get("COWORKER_API_TOKEN"):
return None # Tauri supplied an in-memory token; never persist it.
token = secrets.token_hex(32)
os.environ["COWORKER_API_TOKEN"] = token
return write_private_text(
state_dir() / f"sidecar-{port}.token", token + "\n"
)
def main(argv=None) -> None:
_ensure_ca_bundle()
cfg = load_config() # global config supplies defaults
@@ -144,14 +156,19 @@ def main(argv=None) -> None:
# a random free port (to coexist with a hand-run server on 8765), so the
# managed-connect redirect must follow the real port, not the 8765 default.
os.environ["COWORKER_PORT"] = str(args.port)
generated_token_path = _ensure_api_token(args.port)
try:
import uvicorn
import uvicorn
_exit_when_orphaned()
app = build_app(args.cwd, args.model, args.mode)
uvicorn.run(
app, host=args.host, port=args.port, ws_max_size=_WS_MAX_FRAME_BYTES
)
_exit_when_orphaned()
app = build_app(args.cwd, args.model, args.mode)
uvicorn.run(
app, host=args.host, port=args.port, ws_max_size=_WS_MAX_FRAME_BYTES
)
finally:
if generated_token_path is not None:
generated_token_path.unlink(missing_ok=True)
os.environ.pop("COWORKER_API_TOKEN", None)
if __name__ == "__main__":