지문 인증 한 번으로 8시간 동안 비밀번호 재사용하는 CLI 도구, once

Once: Cache CLI Commands

alex0ptr/once는 동일한 명령어의 출력을 일정 시간 동안 메모리에 캐시해 재사용하는 CLI 도구다. 1Password 같은 도구에서 비밀번호를 읽을 때 매번 지문 인증을 요구하는 불편을 해소한다. 첫 호출 시에만 지문 인증을 하고, 이후 같은 테넌트 키로 8시간 동안 캐시된 결과를 즉시 반환한다. 캐시 키는 테넌트, 작업 디렉터리, 명령어로 구성되며, --no-dir 옵션으로 디렉터리 독립적으로 사용할 수 있다. 백그라운드 데몬이 메모리에 결과를 보관하고 마지막 항목이 만료되면 자동 종료된다.

전형적인 사용 사례: 1Password에서 비밀을 읽을 때 매번 지문으로 승인하지 않아도 된다.
  1. aktau

    이런 종류의 도구는 매우 유용하다. 나는 memo라는 내 도구를 직접 만들어 쓰고 있다(그냥 셸 스크립트다: https://github.com/aktau/dotfiles/blob/master/bin/memo).

    https://news.ycombinator.com/item?id=45670052 에서 논의된 적이 있고, 다른 사람들도 자신들의 도구(예: bkt(1), up(1))를 언급했다.

    내가 보는 주요 차이점은:

    - memo는 빌드할 필요가 없다(셸 스크립트이기 때문).

    - once는 실행 중인 데몬에 출력 캐시를 보관한다. 반면 memo는 /tmp 아래에 사용 가능한 최고의 압축(선호는 zstd)으로 내용을 저장한다. 여기에는 트레이드오프가 있다. 보안 측면에서 더 파레토 최적에 가까운 방식은 일종의 세션 키를 두고 디스크에 파일을 압축한 뒤 암호화하는 것일 수 있다.

  2. __MatrixMan__

    OS가 재실행이 필요한지 내가 명시하지 않아도 알 수 있도록, 애플리케이션이 자신의 출력에 대한 충분한 메타데이터를 노출해주는 세상을 꿈꾼다.

    NixOS는 빌드에 대해 이걸 해주지만, 임의의 프로세스로 일반화된 사례는 못 봤다.

  3. xuhu

    명령 앞에 "once"를 붙이지 않고도 이게 동작하면 좋겠다. 특히 출력이 장황한 명령을 실행한 뒤에 나중에 그 출력에서 뭔가를 grep하고 싶어질 때 말이다. 터미널은 스크롤백 버퍼에 출력을 갖고 있으니, 다음과 같이 실행할 수 있는 "output" 명령을 작성하는 것만으로 해결될지도 모른다:

    $ cmake ..

    $ output | grep "libssl version"

  4. deadbunny

    나는 항상 내 터미널에서 캐시 무효화를 다뤄보고 싶었다.

  5. giancarlostoro

    > 일반적인 사용 사례: 모든 읽기마다 지문으로 승인하지 않고 1Password에서 비밀을 읽는 것.

    어, 그건 좀 글쎄다, 형.

이 날의 다른 글

2026-10-09