# 비밀 값 (/ko/docs/workspaces/secrets)

비밀 값은 값이 사용자의 Mac의 키체인에 남아 있는 변수입니다. 작업 공간 파일에는 이름만 들어 있으므로, 자격 증명을 공유하지 않고도 작업 공간을
커밋하고 공유할 수 있습니다. 비밀번호, 토큰, API 키, 그리고 채팅에 붙여넣지 않을 모든 것에 비밀 값을 사용하세요.

## 변수를 비밀 값으로 만들기 [#make-a-variable-secret]

1. 변수의 표를 엽니다. [환경](/docs/workspaces/environments) 페이지, <strong>폴더 설정… › 변수</strong>, 또는 요청의 <strong>변수</strong> 탭입니다.
2. 변수를 추가하거나 찾아서 <strong>비밀 키</strong>를 체크합니다.
3. 필드(<strong>이 Mac에 설정되지 않음</strong>이라고 표시됨)에 값을 입력하고 <kbd>↩</kbd>를 누르거나 <strong>저장</strong>을 클릭합니다.

필드에는 값이 다시 표시되지 않습니다. 값이 들어 있으면 열쇠 아이콘과 함께 <strong>키체인에 저장됨</strong>이라고 표시됩니다. 값을 바꾸려면 새 값을 입력하고
저장하세요.

비밀 값은 다른 변수처럼 `{{token}}`으로 사용합니다.

<Shot id="workspaces-secret-variable" alt="환경 페이지의 작업 공간 변수: 비밀 키로 표시된 token, 값 필드에 키체인에 저장됨이라고 표시됨" />

파일에서 비밀 값은 값 없이 이름과 플래그로만 기록됩니다.

```toml
[[variables]]
name = "token"
secret = true
```

수준마다 자체 값을 보관합니다. Staging 환경의 비밀 값 `password`와 Production 환경의 비밀 값은 서로 다른 두 키체인 항목이므로, 환경마다 자체
비밀번호를 가질 수 있습니다.

## 값이 있는 곳 [#where-the-values-live]

값은 로그인 키체인에 비밀 값마다 항목 하나씩, `Echolot secret <name>`이라는 레이블로 보관됩니다. 값은 작업 공간(`workspace.toml`에 있는 ID 기준)과
변수가 정의된 수준에 속합니다. 같은 Mac의 명령줄 도구는 같은 항목을 읽습니다.

이 Mac에 값이 없는 비밀 값은 다른 수준으로 대체되지 않습니다. 값을 설정하기 전까지 요청에 `the secret {{password}} has no value on this Mac`이라고
표시됩니다.

<Edition only="appstore">
  App Store 에디션도 같은 키체인을 사용합니다. 직접 다운로드 버전이나 명령줄 도구가 만든 항목은 접근 허용을 한 번 요청할 수 있으며, 이때
  <strong>항상 허용</strong>을 선택하세요.
</Edition>

## 파일에 절대 들어가지 않는 것 [#what-never-goes-into-files]

Echolot은 다음을 작업 공간 파일에 넣지 않습니다.

- 비밀 변수의 값.
- [응답 캡처](/docs/requests/captures)가 저장하는 비밀 값. 비밀로 표시한 캡처는 키체인에만 기록합니다. Alpenglow에서는 <strong>Auth › Sign in</strong>이
  `access_token`을 비밀 값 `{{token}}`에 캡처합니다.
- OAuth 2.0 토큰과 MCP 로그인.
- <strong>키체인으로 이동</strong>(아래 참조)으로 옮긴 값.

일반 텍스트로 입력한 것은 일반 텍스트로 남습니다. 인증이나 프록시의 비밀번호 필드에 변수 대신 리터럴 값이 들어 있으면 Echolot이 그 아래에
<strong>작업 공간 파일에 일반 텍스트로 저장됩니다.</strong>라고 경고합니다. <strong>키체인으로 이동</strong>을 클릭하면 값이 작업 공간 비밀 변수가 되고, 필드에는 그 자리에
`{{name}}`이 들어갑니다.

비밀 값은 Echolot이 해석된 요청을 보여 주거나 넘겨주는 모든 곳에서도 가려집니다. 미리보기, 훑어보기, 변수 패널, 기록 검색, 에이전트가 받는 모든
내용이 해당됩니다. [코드 생성…](/docs/workspaces/exporting#copy-a-request-as-code)과 <strong>cURL로 복사</strong>는 예외입니다. 이 둘은 요청을 보낼 때 그대로,
비밀 값을 포함해서 기록합니다.

## 가져오기는 자격 증명을 비밀 값으로 옮깁니다 [#imports-move-credentials-into-secrets]

Postman 컬렉션, Insomnia 내보내기 파일 또는 다른 파일을 [가져오면](/docs/get-started/importing) 인증 설정과 자격 증명 헤더에서 발견된 비밀번호,
토큰, API 키가 비밀 변수가 됩니다. 값은 키체인으로 가고, 요청에는 대신 `{{name}}`이 들어갑니다. 이름은 요청의 이름과 필드로 만들어지며
`{{me_password}}` 같은 형태입니다. 가져오기 보고서에는 저장한 비밀 값의 이름만 나열되고 값은 절대 나열되지 않습니다.

주소(`https://user:pass@…`), 쿼리 문자열, 본문에 적힌 자격 증명은 아직 옮겨지지 않습니다. 가져온 뒤에 직접 확인하세요.

## 내보내기에는 값이 빠집니다 [#exports-leave-values-out]

[내보내기](/docs/workspaces/exporting)는 모든 형식에서 비밀 변수를 값 없이 이름만 기록합니다. 내보낸 파일을 여는 사람이 자기 쪽에서 값을 설정합니다.

## 명령줄과 CI에서의 비밀 값 [#secrets-on-the-command-line-and-in-ci]

명령줄 도구는 비밀 값을 다음 순서로 찾습니다.

1. `echolot run`에 전달한 `--secrets` 파일. `NAME=value` 형식의 줄입니다.
2. 환경 변수 `ECHOLOT_SECRET_<NAME>`. 이름을 대문자로 쓰고 영문자와 숫자가 아닌 문자는 모두 `_`로 바꿉니다. `{{token}}`은
   `ECHOLOT_SECRET_TOKEN`을, `{{api-key}}`는 `ECHOLOT_SECRET_API_KEY`를 읽습니다.
3. Mac에서는 앱이 보관하는 키체인 항목.

```sh
ECHOLOT_SECRET_TOKEN=… echolot run Alpenglow.echolot --folder orders
echolot run Alpenglow.echolot --env staging --secrets staging.secrets
```

`CI`가 설정되어 있거나 `ECHOLOT_KEYCHAIN=0`이면 키체인은 건너뜁니다. CI에서는 CI의 비밀 저장소에서 `ECHOLOT_SECRET_…` 변수를 설정하세요.
[CI](/docs/cli/ci)를 참조하세요.

환경에서 찾은 비밀 값은 모든 수준에 적용됩니다. `ECHOLOT_SECRET_PASSWORD`는 어떤 환경에서든 `{{password}}`에 응답합니다.

명령줄에서 가져오기를 하면 앱처럼 자격 증명을 비밀 값으로 옮깁니다. 키체인이 없으면 도구가 어떤 `ECHOLOT_SECRET_…` 변수를 설정해야 하는지 알려 줍니다.

## 팀원이 처음 열 때 [#a-teammates-first-open]

작업 공간을 클론한 팀원은 모든 비밀 값의 이름은 받지만 값은 하나도 받지 못합니다. 팀원의 표에는 <strong>이 Mac에 설정되지 않음</strong>이라고 표시됩니다.
팀원이 자기 값을 한 번 설정하면, 그 뒤로는 모두가 같은 파일로 각자의 자격 증명을 가지고 작업합니다. [Git과 팀](/docs/workspaces/git-and-teams)을
참조하세요.
