Files
Codeman/.changeset/multiuser-mode.md
T
Codeman maintainer 0ab2416460 docs(multiuser): plan status, CLAUDE.md, security-architecture, README + changeset
Stamp the plan doc with shipped-by-phase status; add the multi-user Key Patterns
entry + State Files + case-spaces note to CLAUDE.md; add a multi-user section to
the security architecture (threat model: workspace separation, not a security
boundary) and a README opt-in section; add a minor changeset.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-20 04:34:44 +02:00

1.3 KiB

aicodeman
aicodeman
minor

Opt-in multi-user mode (--multiuser / CODEMAN_MULTIUSER=1, off by default).

Named users with individually scrypt-hashed passwords in ~/.codeman/users.json, per-user case spaces under ~/codeman-users/<name>/cases, and full ownership scoping of sessions, cases, cron jobs, search, file previews, and real-time SSE/WS streams. Non-admin users default to Claude's classifier-guarded --permission-mode auto; raw shell mode, cron launchCommand, and skip-permissions require an explicit per-user canBypassPermissions grant. Machine-level resources (remote/Docker hosts, tunnel, self-update, settings) are admin-only. Admin API (/api/admin/users*) with one-time passwords, last-admin invariants, and an append-only audit log; self-service /api/me + password change; a frontend admin Users tab + change-password modal; and codeman users add|passwd|list|rm CLI. Also adds a global auto Claude startup permission mode. When off, behavior is byte-identical to single-user.

Note: multi-user mode separates workspaces for a trusted team; it is not a security boundary between users (all sessions share the host OS account). Pair with Docker cases for real isolation.

Fixes a users.json corruption race by serializing the store's read-modify-write.