# Хранилище и шифрование (/ru/docs/workspaces/storage-and-encryption)

Echolot хранит данные двух видов раздельно. Ваши рабочие пространства — папки, которые вы кладёте куда хотите.
Собственные данные Echolot (тела ответов, история, отчёты о сбоях) лежат в его папке хранилища на вашем Mac. Если
удалить эту папку, пропадёт история, но не запросы.

## Где что лежит [#where-things-are]

| Что | Где |
| --- | --- |
| Рабочие пространства | Там, где вы их создаёте или держите. |
| Секретные значения, токены OAuth, ключ шифрования | Ваша связка ключей входа. |
| Тела ответов и записи обмена по сети | `Payloads` в папке хранилища Echolot. |
| История | `History` в папке хранилища Echolot: один файл на рабочее пространство. |
| Разговоры с Ассистентом, которыми вы не поделились | `Assistant` в папке хранилища Echolot. |
| Отчёты о сбоях, если вы их разрешили | `Crash Reports` в папке хранилища Echolot. |
| Ваши шаблоны кода | `Code Templates` в папке хранилища Echolot. См. [экспорт](/docs/workspaces/exporting#copy-a-request-as-code). |
| Рабочее пространство «Примеры» | `Examples.echolot` в папке хранилища Echolot. |
| Настройки, глобальные переменные, активное окружение каждого рабочего пространства | Настройки Echolot (preferences). |

Папка хранилища Echolot — `~/Library/Application Support/Echolot`. Чтобы открыть её, перейдите в
**Настройки › О программе** и нажмите **Показать в Finder** рядом с **Ответы и история**.

<Edition only="appstore">
  Редакция для App Store хранит те же данные в собственном контейнере, а не в `~/Library/Application Support/Echolot`.
  **Настройки › О программе › Показать в Finder** открывает нужную папку в любой редакции. Рабочие пространства
  остаются там, где вы их держите, в обеих редакциях и открываются в обеих.
</Edition>

## Тела ответов [#response-bodies]

Каждое тело ответа сразу записывается в файл по мере поступления, а не в память, так что ответ в несколько гигабайт —
не проблема. Тело хранится один раз, сколько бы раз оно ни приходило: если отправить один и тот же запрос десять раз и
получить один и тот же ответ, останется одна копия.

Сколько места могут занимать тела, задаётся в **Настройки › Хранилище › Тела ответов**: **Хранить тела ответов до** 1,
2, 5 (по умолчанию), 10, 20 или 50 ГБ. При превышении этого размера Echolot удаляет наименее давно использованные тела.
Он всегда оставляет:

- тела, показанные в открытой вкладке,
- самый новый ответ каждого сохранённого запроса, чтобы он снова показывался после перезапуска,
- тела, которые другие запросы читают через [динамические значения](/docs/requests/dynamic-values), например
  `$responseJSONPath`.

Строка под пределом показывает, сколько места на диске занимают сохранённые тела. Чтобы освободить это место сразу,
нажмите **Удалить сохранённые тела…** и подтвердите. Echolot оставляет только то, что нужно открытым окнам: тела,
показанные в открытой вкладке, и самый новый ответ каждого запроса в открытых рабочих пространствах. Все остальные тела
удаляются, включая тела рабочих пространств, которые не открыты, и вернуть их нельзя. Запросы и их история остаются;
старые ответы показываются без тел.

История хранит запрос, который отправил каждый обмен. Тело запроса больше 256 КБ в истории не хранится; в записи обмена
по сети остаётся его начало.

## История [#history]

**Настройки › Хранилище › История** задаёт, сколько ответов на запрос хранит [история](/docs/workspaces/history): 10,
25, 50 (по умолчанию), 100 или 200. Сначала уходят старые записи. Каждая отправка хранится с указанием, кто её сделал:
вы, запуск или агент. Чтобы очистить историю рабочего пространства, используйте **Очистить историю…** в меню ⋯ его
[страницы «История»](/docs/workspaces/history); история отдельного запроса очищается из того же меню в её списке.

<Shot id="workspaces-settings-storage" alt="Настройки, область «Хранилище»: «Шифровать тела ответов на диске», «Хранить тела ответов до» 5 ГБ и «История на запрос» 50 ответов" />

## Шифрование тел ответов на диске [#encrypt-response-bodies-on-disk]

Ответы могут содержать персональные данные, токены и всё остальное, что возвращает API. Когда шифрование включено,
ничего из ответа в папке хранилища Echolot нельзя прочитать без ключа из вашей связки ключей.

1. Откройте **Настройки › Хранилище**.
2. Включите **Шифровать тела ответов на диске**.

Echolot создаёт ключ при первом включении и хранит его в вашей связке ключей входа под именем
**Echolot response storage key**. Новые тела сразу записываются зашифрованными. Уже сохранённые тела шифруются в фоне; в настройке виден
ход работы («Шифрование: 120 из 860…»), а затем состояние, например «Все сохранённые тела зашифрованы (860).»

Тела шифруются алгоритмом AES-256 в режиме счётчика, который позволяет Echolot читать любую часть тела, не
расшифровывая остальное: просмотр, поиск внутри ответа и большие тела работают как прежде.

### Что охватывает шифрование [#what-it-covers]

| Шифруется | Не шифруется |
| --- | --- |
| Тела ответов | Файлы рабочего пространства (секретных значений в них и так нет) |
| Записи обмена по сети (исходные отправленные и полученные байты) | Файл истории: имена, адреса, заголовки, статус и время |
| Отформатированные копии тел | Настройки Echolot (preferences) |

Файл истории не шифруется, поэтому, пока шифрование включено, текст тел в нём не хранится. Поиск тогда находит запросы
по имени, адресу и заголовкам, но не по содержимому их тел. Включение шифрования удаляет текст тел, который история уже
проиндексировала. Секретные значения скрыты в истории независимо от того, включено ли шифрование.

### Выключение [#turning-it-off]

Выключите **Шифровать тела ответов на диске**. Новые тела снова записываются открытыми, а сохранённые Echolot
расшифровывает в фоне («Расшифровка: 120 из 860…»). Ключ остаётся в связке ключей, поэтому ещё не расшифрованные тела
по-прежнему читаются.

Ответы, записанные, пока шифрование было включено, не попадают в поиск истории по телам. Ответы после этого снова
доступны для поиска по телу.

<Callout type="warn">
  Сохраните элемент **Echolot response storage key** в связке ключей. Echolot нужен он, чтобы читать зашифрованные тела.
</Callout>

Если ключ не удаётся создать или прочитать, настройка сообщает об этом («Не удалось сохранить ключ шифрования в Связке
ключей…»), и тела остаются как есть.

## Как освободить место [#free-up-room]

- Уменьшите **Хранить тела ответов до** в **Настройки › Хранилище**. Echolot вскоре удалит наименее давно
  использованные тела.
- Очистите историю на странице [«История»](/docs/workspaces/history#clear-history) — для одного запроса или для всего
  рабочего пространства.
- Выйдите из Echolot и удалите `Payloads` или `History` в его папке хранилища. Вы потеряете прошлые ответы и историю;
  запросы, окружения и все файлы рабочих пространств останутся.
