본문으로 건너뛰기

CLI 명령 ​

파일 백업과 안전한 전송 재개는 암호화 파일 업로드를 참고하세요(CLI v0.9.19 이상).

text
c6s help
c6s version
c6s mcp
c6s login --provider google
c6s whoami [--json]
c6s profile list
c6s profile default
c6s profile default set <이름>
c6s --profile <이름> device status
c6s device enroll
c6s vault connect
c6s item list --remote
c6s item policy <아이템-ID> --field <라벨-또는-ID> --agent-policy <정책>
c6s request list
c6s --profile PROFILE request wait REQUEST_ID --json
c6s device setup [--json]
c6s device status [--json]
c6s protocol verify
c6s protocol inspect

출력 계약 ​

  • 사람용 출력은 터미널에서 간결하게 읽을 수 있게 제공합니다.
  • 지원하는 명령의 --json 출력은 안정적인 기계 데이터입니다.
  • 진단과 사용 오류는 표준 오류를 사용합니다.
  • MCP 표준 출력에는 프로토콜 프레임만 나옵니다.

신뢰 CLI 설정 ​

계정 인증, 기기 신뢰, 금고 연결은 서로 다른 단계입니다.

sh
c6s login --provider google
c6s whoami
c6s device enroll
c6s device remote-status
c6s vault connect
c6s vault remote-status

vault connect를 실행하기 전에 신뢰된 iPhone의 Cerberus에서 표시된 CLI 기기를 정확히 확인하고 승인하세요. 계정 프로필은 서로 격리됩니다. 대화형 사용에는 편한 기본 프로필을 지정하고, 스크립트에서는 명령마다 --profile <이름> 또는 C6S_PROFILE을 사용해 공유 상태를 계속 바꾸지 마세요.

현재 로그인 확인 ​

c6s whoami는 선택한 프로필을 필요할 때 갱신하고 서버에서 계정을 확인합니다. 프로필·계정·조직·공급자·상태·만료 시각·자동 갱신 여부처럼 값이 아닌 정보만 표시합니다. 다른 프로필은 c6s --profile <이름> whoami로 확인할 수 있습니다.

1시간 수명의 액세스 토큰은 자동 갱신됩니다. 일반적으로 대화형 로그인이 다시 필요한 경우는 30일 동안 갱신하지 않았을 때, 세션의 절대 수명 90일이 지났을 때, 명시적으로 로그아웃·기기 폐기했을 때, 또는 재사용 공격이 감지됐을 때입니다. 네트워크나 키체인 오류는 로그아웃과 구분해 안내하며 저장된 자격 증명을 삭제하지 않습니다.

값을 다시 입력하지 않고 접근 정책 변경하기 ​

기존 필드의 에이전트 사용 정책은 메타데이터입니다. 암호화된 값을 보거나 교체하지 않고 변경합니다.

sh
c6s item policy ITEM_ID \
  --field FIELD_ID \
  --agent-policy approved_injection
c6s item inspect ITEM_ID
c6s vault upload --yes

정책 변경은 명시적으로 업로드하기 전까지 로컬에만 있습니다. reference_only가 안전한 기본값이고, approved_injection은 별도로 승인된 작업에서 해당 필드를 쓸 수 있게 하며, never_agent는 에이전트 사용 대상에서 제외합니다.

이미 연결된 원격 금고에 있는 아이템은 원격 ID를 사용해 최신 암호화 리비전에 정책을 직접 변경합니다.

sh
c6s item policy REMOTE_ITEM_ID --remote \
  --field FIELD_ID \
  --agent-policy approved_injection

모든 필드 값과 관계없는 속성은 그대로 보존됩니다. 다른 작성자가 먼저 변경하면 충돌로 중단하며 CLI는 자동 재시도나 덮어쓰기를 하지 않습니다. 로컬과 원격 revision 번호는 서로 독립적입니다. 번호를 맞추려고 금고 파일을 편집하거나 revision을 낮추지 마세요. vault upload는 충돌 덮어쓰기 명령이 아닙니다.

초기 업로드가 활성 원격 아이템에서 다른 내용을 발견하면 첫 쓰기 전에 중단하고 로컬 ID·원격 ID·원격 revision을 표시합니다. 출력된 두 개의 값 비공개 item inspect 명령만 실행하세요. vault reconcile은 비어 있는 tombstone에만 쓰므로 이 경우에는 사용하지 않습니다. --json에서는 같은 실패를 표준 오류의 vault_active_item_conflict 객체로 제공하며 writesApplied: 0, reconcileAllowed: false, 안전한 nextCommands를 포함하고 표준 출력은 비워 둡니다.

누락된 필드는 다릅니다. 신뢰할 수 있는 로컬 원본에서 한 번 안전하게 가져오세요. 시크릿 문자열을 명령 인수, 채팅, 로그, 임시 평문 파일에 넣지 마세요.

sh
c6s item set ITEM_ID \
  --field "Private Key" \
  --value-stdin \
  --kind private_key \
  --agent-policy never_agent < /path/to/key.p8

사용하는 워크플로가 파일을 받을 수 있다면 바이너리 인증서나 서명 번들은 네이티브 암호화 첨부파일로 보관하세요. 하나의 자격 증명을 여러 텍스트 필드로 직접 쪼개지 마세요. 개인 키의 approved_injection 전환은 사용자가 정확한 승인 프로세스에서의 사용을 명시적으로 받아들인 경우에만 수행합니다.

현재 OTP 코드 조회하기 ​

CLI v0.11.0 이상, macOS 앱 0.7.0 이상, iOS TestFlight 1.0.0 (56) 이상이 필요합니다. 활성화 전에 편집에 쓰는 모든 앱·CLI를 업데이트하세요. 소유자가 인증 코드 설정에서 에이전트 인증코드 조회 허용을 켜야 합니다(이전 앱에서는 CLI 코드 조회 허용). 기존 항목은 자동으로 허용되지 않습니다.

sh
c6s --profile PROFILE otp get ITEM_ID --field FIELD_ID --json

현재 code를 앞자리 0이 보존되는 문자열로 반환하며 expiresAt, generatedAt, remainingSeconds, periodSeconds와 정확한 항목·필드·리비전이 포함됩니다. 기본 유효시간은 최소 5초입니다. 만료 직전이면 새 주기까지 잠깐 기다린 뒤 기기 신뢰와 최신 원격 정책을 다시 확인합니다. 지금 코드를 즉시 받으려면 --min-validity 0s를 사용하세요. 허용된 조회에는 매번 승인, 실행 권한 소비, 자식 프로세스가 필요 없습니다. 온라인 확인에 실패하면 로컬 캐시 권한으로 대신 반환하지 않습니다.

메타데이터와 달리 이 출력은 민감합니다. 유효시간 안에 승인된 목적지에만 사용하고, 로그에 남기거나 로그인·결제를 자동 재시도하지 마세요. 원본 비밀키는 never_agent로 계속 숨겨집니다. 조회 거부는 에이전트가 스스로 권한을 켜도 된다는 뜻이 아닙니다. 코드를 에이전트에 반환하지 않는 기존 otp request 승인 후 주입도 그대로 지원합니다.

조회와 승인 중 어떤 방식을 쓸까요? ​

필요한 동작진행 방법
조회가 허용된 인증코드를 입력하기입력 직전에 otp get으로 코드와 만료 시각을 받습니다.
승인 전용 인증코드를 정확한 프로그램에서 사용하기otp request로 요청하고 앱에서 승인한 뒤 한 번 실행합니다.
조회가 꺼진 상태에서 브라우저에 코드 입력하기2FA → 수정에서 조회를 켜고 저장·동기화하거나 직접 입력합니다.

조회가 거부되어도 OTP 사용 자체가 불가능한 것은 아닙니다. 이미 실행을 맡긴 프로그램은 조회 권한을 켜지 않고 승인 방식으로 사용할 수 있습니다.

sh
c6s --profile PROFILE otp request --summary "검토한 작업에서 인증코드 사용" \
  --inject ITEM_ID:FIELD_ID:REVISION:ENV --json -- /absolute/program AUTHORIZED_ARGS
c6s --profile PROFILE request wait REQUEST_ID --execute --json

정확한 원격 필드와 리비전, 실행 파일과 인자를 지정하세요. 승인 후 프로그램을 시작할 때 새 인증코드를 생성해 주입합니다. 별도 브라우저 자동화 도구에 코드를 반환하는 방식은 아닙니다. 에이전트는 지원되는 프로그램 실행을 조회 거부 때문에 포기하거나 이미 맡긴 같은 작업의 채팅 승인을 다시 요구하지 않아야 합니다.

Mac 0.7.1·iOS TestFlight 1.0.0 (57): 가져오기 화면에서도 조회 권한을 선택하고 에이전트 코드 접근에서 기존 계정들을 함께 관리할 수 있습니다. 바꾼 선택만 저장하며 기존 권한과 원본 비밀키를 보존합니다. CLI v0.11.1은 코드를 노출하지 않고 otpCodeReadAllowed를 명시적으로 표시합니다.

소유자가 명시적으로 허용한 정책 변경은 현재 원격 리비전을 고정해 수행할 수도 있습니다.

sh
c6s --profile PROFILE otp policy ITEM_ID --field FIELD_ID --revision CURRENT_REVISION \
  --code-policy allow_read --yes --json

조회를 끄려면 approval_required를 사용합니다. 먼저 메타데이터에서 현재 리비전을 확인하세요. 동시 변경 충돌에서는 덮어쓰지 않고 중단합니다. 앱에서 바꾼 설정은 동기화 후 적용됩니다.

한 번만 승인해 실행하기 ​

원격 아이템과 필드 ID를 먼저 확인합니다. 값은 계속 숨겨집니다.

sh
c6s item list --remote
c6s item inspect ITEM_ID --remote

절대 경로 실행 파일과 정확한 아이템·필드·리비전 참조로 변경 불가능한 요청을 만듭니다. 필드 정책은 approved_injection이어야 합니다.

sh
c6s request create \
  --summary "검토한 릴리스 배포" \
  --inject ITEM_ID:FIELD_ID:REVISION:API_TOKEN \
  -- /usr/bin/env deploy

iPhone 앱에서 정확한 프로세스를 확인하고 승인한 뒤 짧은 수명의 권한을 한 번만 소비합니다.

sh
c6s request inspect REQUEST_ID
c6s request execute REQUEST_ID

실행 시 셸을 사용하지 않습니다. 정확한 암호화 리비전을 로컬에서 확인하고 허용된 값만 자식 프로세스 환경에 넣으며, 제한된 출력을 캡처해 주입한 값과 정확히 일치하는 문자열을 마스킹합니다. 출력 마스킹은 범용 DLP가 아닙니다. 자식 프로세스는 데이터를 변형하거나 전송할 수 있으므로 알고 있는 실행 파일과 인수만 승인하세요.

요청을 유지하면서 승인 기다리기 ​

에이전트는 같은 프로필과 반환된 요청 ID를 고정하고, 아래 둘 중 한 가지를 선택합니다.

sh
# 결정만 기다리고 실행하지 않음
c6s --profile PROFILE request wait REQUEST_ID --json
# 또는, 사용자가 승인 후 이 정확한 작업의 실행까지 맡긴 경우에만:
c6s --profile PROFILE request wait REQUEST_ID --execute --json

대기·실행 전에 요청의 정확한 내용을 확인하세요. 첫 번째 명령은 실행 권한을 가져오거나 소비하지 않습니다. 두 번째는 사람이 앱에서 승인한 프로세스를 한 번 실행하며, 에이전트가 스스로 승인하는 기능이 아닙니다. 일반 필드·TOTP·암호화 파일에 모두 같은 방식으로 사용할 수 있습니다.

CLI v0.11.3의 기본값은 승인 대기 15분, 승인 서명 후 1회 실행 가능 시간 15분입니다. 두 기한은 아래 설정으로 바꿀 수 있습니다. 로컬 대기는 저장한 승인 시간을 기본값으로 사용하고, 명시적인 타임아웃은 1초–24시간을 지원합니다. 어느 기한도 늘리지 않고, 이미 시작한 프로세스의 실행 시간도 제한하지 않습니다. v0.11.2 이하의 기본값은 승인 대기 5분·실행 가능 시간 2분이었고, 로컬 대기는 2초–10분(기본 5분)이었습니다. 기존 요청의 기한은 유지됩니다. CLI 프로세스 하나를 유지하고 실행 도구의 핸들로 결과를 이어받으세요. 도구가 중간 출력을 반환할 때마다 요청을 새로 만들지 마세요. 웹훅이나 종료된 에이전트를 자동으로 깨우는 기능은 제공하지 않습니다.

대기 시간 초과나 도구 연결 끊김 후에는 같은 ID·프로필의 상태부터 확인합니다. 거절·만료·누락·검증 실패·이미 소비된 권한이면 중단하세요. 결과가 불명확한 실행을 자동 재요청하거나 재실행하지 않습니다. state: approved만으로는 실행 가능하지 않으며 grantState: available이어야 합니다. 실행 JSON의 exitCode도 확인하세요. 자식 프로세스가 실패해도 1회 권한은 소비됩니다.

CLI v0.10.6부터 --json 사용 시 대기 실패를 stderr의 request_wait_* 진단으로 제공하고 stdout은 비웁니다. nextAction과 선택적인 lastErrorCode로 후속 조치를 구분합니다. 인증·권한·검증 오류는 즉시 중단하고 일시적인 상태 조회 오류만 지터와 Retry-After를 반영해 제한적으로 재시도합니다. 이전 stable도 위 명령을 지원하지만 대기 오류는 일반 텍스트일 수 있습니다. 대기 전 프로필·자격 증명 로딩 오류와 실행 시작 후 오류는 각각 기존 진단을 유지하며 대기 오류로 뭉뚱그리지 않습니다.

MCP 어댑터는 요청을 승인하거나 범위를 넓힐 수 없고 값을 공개하지 않습니다. 같은 변경 불가능한 요청을 준비할 수 있으며, 신뢰 기기가 정확한 1회 권한을 발급한 뒤에만 별도의 파괴적 도구로 실행할 수 있습니다.

설치된 버전의 c6s help를 정확한 명령 목록으로 사용하세요.

요청 시간 설정 (CLI v0.11.3부터) ​

CLI v0.11.3과 호환되는 V4 승인 앱·업데이트된 서버의 기본값은 승인 대기 15분, 승인 서명 후 1회 실행 가능 시간 15분입니다. 호환 버전을 함께 업데이트해야 하며, 이미 생성한 요청의 기한은 유지됩니다.

sh
# 유효한 기본값 확인: 로그인이나 금고 접근 없이 동작합니다.
c6s request config --json
# 현재 릴리스 채널에서 앞으로 만들 요청의 기본값 변경
c6s request config --approval-ttl 30m --execution-ttl 30m
# 두 기본값을 다시 15분으로 초기화
c6s request config --reset

request create 또는 otp request에서 -- 앞에 --approval-ttl 45m --execution-ttl 20m을 넣으면 해당 요청의 시간만 바뀝니다. 각 항목은 요청 옵션 → 저장된 설정 → 기본 15분 순서로 결정합니다. 1초부터 24시간까지 정수 초 단위로 지정할 수 있습니다. 설정은 릴리스 채널별로 저장하고 기존 요청에는 적용하지 않습니다. 승인 앱은 고정된 승인 기한과 실행 가능 시간을 승인 전에 표시합니다. 이전 승인 앱은 V4 요청을 거부합니다.

request wait의 기본 대기 시간은 저장한 승인 대기 시간입니다. --timeout으로 1초–24시간을 지정하면 로컬 대기만 바뀝니다. 요청별 승인 시간을 더 길게 지정했다면 대기 시간도 맞춰 지정하세요. 승인·실행 기한은 이미 시작한 프로세스의 실행 시간을 제한하지 않습니다. 실행 시작에 실패해도 1회 권한은 소비되므로 자동으로 반복하지 마세요.

Private beta documentation. Authentication never unlocks the vault.