Skip to main content
failproofai auth login    # 이메일 + 일회용 코드
failproofai auth logout   # 현재 세션 취소
failproofai auth whoami   # 로그인된 계정 정보 출력
하위 호환성을 위해 기존의 --login / --logout / --whoami 플래그 형식도 별칭으로 계속 사용할 수 있습니다. 인증은 선택 사항입니다. 정책, 대시보드, /audit 페이지를 비롯한 모든 로컬 기능은 로그인 여부와 관계없이 동일하게 작동합니다. 로그인 기능은 안정적인 신원이 필요한 기능(현재는 재감사 리마인더, 향후 더 많은 기능 예정)을 위한 기반을 제공하기 위해 존재합니다.

로그인 흐름

failproofai auth login
이메일 입력을 요청하고, 해당 주소로 6자리 일회용 코드를 발송하며, 코드 입력을 요청합니다. 성공 시 ~/.failproofai/auth.json (모드 0600)이 저장됩니다. 동일한 세션은 인앱 대시보드에서도 확인할 수 있으며, /audit에서 [ set a reminder ]를 클릭하면 로그인된 상태로 인식됩니다. 대시보드는 CLI를 사용하지 않는 사용자를 위해 /audit에서 모달 다이얼로그 형태로 동일한 흐름을 제공합니다.

로그아웃

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

계정 확인

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

지속적인 재감사 리마인더

/audit 페이지에서 [ set a reminder ] 를 클릭하거나 해당 버튼이 연결된 모달을 통해 로그인하면, 대시보드가 ~/.failproofai/next-audit.json에 소형 보조 파일을 생성합니다:
{
  "next_audit_at": 1780765200,
  "user_email": "you@example.com",
  "set_at": 1780160574
}
이 파일은 설정한 이메일 계정에 귀속됩니다 — CLI 세션을 다른 계정으로 전환하면 이전 사용자에게 속한 리마인더는 표시되지 않습니다. 기본 오프셋은 7일이며, 스케줄러가 도입되면 이후에 설정 가능합니다. auth.json과 동일하게 0600 권한으로 생성됩니다. 대시보드의 /api/auth/reminder 엔드포인트는 활성 세션이 필요하며 GET(조회), POST(설정/재예약), DELETE(삭제)를 지원합니다.

~/.failproofai/auth.json 내용

{
  "access_token": "eyJhbGc…",
  "refresh_token": "9ede3e…",
  "access_expires_at": 1780160574,
  "refresh_expires_at": 1782748974,
  "user": { "id": "<uuid>", "email": "you@example.com" }
}
0600 권한(소유자 전용 읽기/쓰기)으로 생성됩니다. 액세스 토큰은 유효 기간 1시간의 HS256 JWT이며, 리프레시 토큰은 서버가 SHA-256(token) 형태로 저장하는 불투명한 256비트 난수 문자열입니다. 리프레시 토큰 재사용이 서버 측에서 감지되면 해당 사용자의 모든 세션이 취소됩니다.

환경 변수

변수기본값용도
FAILPROOF_API_URLhttps://api.befailproof.aiAPI 서버 기본 URL을 재정의합니다. 자체 호스팅된 API 서버를 대상으로 로컬 개발 시 유용합니다.
FAILPROOFAI_AUTH_DIR~/.failproofaiauth.json이 저장되는 경로를 재정의합니다. 주로 테스트 용도로 사용합니다.
전체 목록은 환경 변수를 참조하세요.

문제 해결

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