Skip to main content
하위 호환성을 위해 기존 --login / --logout / --whoami 플래그 형식도 별칭으로 계속 사용할 수 있습니다. 인증은 선택 사항입니다. 정책, 대시보드, /audit 페이지 및 기타 모든 로컬 기능은 로그인 여부와 관계없이 동일하게 작동합니다. 로그인 기능은 안정적인 신원이 필요한 기능(현재는 재감사 알림, 향후 더 많은 기능 예정)을 위해 존재합니다.

로그인 흐름

이메일 주소를 입력하라는 프롬프트가 표시되고, 해당 주소로 6자리 일회용 코드가 전송되며, 코드를 입력하면 성공 시 ~/.failproofai/auth.json(권한 0600)이 작성됩니다. 동일한 세션이 인앱 대시보드에서도 확인되며, /audit에서 [ set a reminder ]를 클릭하면 로그인 상태로 인식됩니다. 대시보드는 CLI를 사용하지 않는 사용자를 위해 /audit에서 동일한 흐름을 모달 다이얼로그 형태로 제공합니다.

로그아웃

서버의 현재 세션을 취소하고 ~/.failproofai/auth.json을 삭제합니다. API 서버에 접근할 수 없는 경우에도 로컬 파일은 삭제됩니다 — 로그아웃하려는 로컬 의도가 항상 우선합니다.

계정 확인

유효한 세션이 존재하면 <email> (<user uuid>)를 출력하고 종료 코드 0으로 종료하며, 로그인되어 있지 않으면 not signed in을 출력하고 종료 코드 1로 종료합니다. 액세스 토큰이 만료 1분 이내인 경우 백그라운드에서 자동으로 갱신합니다.

지속적인 재감사 알림

/audit 페이지에서 **[ set a reminder ]**를 클릭하거나(또는 해당 버튼이 표시하는 모달을 통해 로그인하면), 대시보드가 ~/.failproofai/next-audit.json에 소규모 보조 파일을 작성합니다:
이 파일은 설정한 이메일에 종속됩니다 — CLI 세션을 다른 계정으로 전환하면 이전 사용자의 알림은 숨겨집니다. 기본 오프셋은 7일이며, 스케줄러가 도입되면 나중에 설정할 수 있습니다. auth.json과 마찬가지로 0600 권한으로 생성됩니다. 대시보드의 /api/auth/reminder 엔드포인트는 GET(읽기), POST(설정/재예약), DELETE(삭제)를 제공하며 활성 세션이 필요합니다.

~/.failproofai/auth.json의 내용

0600 권한(소유자 전용 읽기/쓰기)으로 생성됩니다. 액세스 토큰은 1시간 유효한 HS256 JWT이며, 리프레시 토큰은 서버가 SHA-256(token)으로 저장하는 불투명한 256비트 랜덤 문자열입니다. 리프레시 토큰 재사용이 서버 측에서 감지되면 해당 사용자의 모든 세션이 취소됩니다.

환경 변수

전체 목록은 환경 변수를 참조하세요.

문제 해결

“Could not reach the api-server” — CLI가 FAILPROOF_API_URL로 TCP 연결을 열 수 없습니다. 네트워크를 확인하거나, 자체 호스팅 API 서버를 실행 중이라면 FAILPROOF_API_URL을 설정하세요. “Rate limited” — 해당 이메일(5회/이메일) 또는 IP(20회/IP)에 대해 15분 이내 로그인 시도가 너무 많거나, 같은 이메일로 이전 요청 후 30초 재전송 제한이 적용됩니다. 오류 메시지에 재시도 가능 시간(초)이 포함됩니다. 코드 거부됨 — OTP가 잘못되었거나 만료되었거나, 5회 오답 잠금이 발생했습니다. failproofai auth login을 다시 실행하여 새 코드를 요청하세요.