Skip to content

feat: Implement agent session isolation for managed projects #98

@Nicered

Description

@Nicered

개요

각 프로젝트에서 Claude Code CLI 에이전트가 claudeship의 소스코드에 집중하는 문제를 해결하기 위해, 에이전트 세션을 프로젝트 단위로 격리합니다.

문제

  • 에이전트가 자신이 담당한 프로젝트의 코드 대신 claudeship 플랫폼 코드를 인식/참조할 수 있음
  • 현재 시스템 프롬프트가 -p (유저 메시지)로 전달되어, Claude CLI의 기본 시스템 프롬프트(CLAUDE.md 포함)가 그대로 적용됨
  • env: { ...process.env }로 claudeship 서버의 전체 환경변수가 누출됨
  • 프로젝트 디렉토리에 CLAUDE.md가 없어서 에이전트에게 프로젝트 정체성을 전달할 수단이 없음

해결 방안

1. CLI 플래그 기반 격리 (claude-cli.service.ts)

  • --append-system-prompt: 스코프 격리 지시사항 주입
  • --setting-sources "project": 글로벌 사용자 설정/CLAUDE.md 무시, 프로젝트 내부만 참조
  • 환경변수 필터링: 필요한 변수만 전달

2. 프로젝트별 CLAUDE.md 자동 생성

  • 프로젝트 생성 시 CLAUDE.md 자동 배치
  • 에이전트의 스코프를 명시적으로 제한하는 지시사항 포함
  • PROJECT.md의 Agent Instructions 내용과 연동

3. 시스템 프롬프트 격리 섹션 추가 (PromptBuilderService)

  • Project Scope Isolation 섹션 추가
  • 에이전트가 프로젝트 외부를 탐색하지 않도록 명시적 지시

리서치 참고

  • Replit: 컨테이너 + NixOS Overlay FS
  • Cursor: OS 샌드박스 (sandbox-exec/bwrap)
  • Bolt.new: 브라우저 WebContainer (WASM)
  • v0.dev: Firecracker MicroVM
  • Claudable: Claude Code CLI 샌드박스에 의존 (현재 claudeship과 동일)
  • Claude Code CLI: --setting-sources, --append-system-prompt, --strict-mcp-config 플래그로 격리 가능

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