Skip to main content

co-env

See, set, remove and repair settings in the env file a `co` invocation selected — global ~/.co/keys.env by default, or the file named by `co --env-file PATH` — with `co env`. Use when a command says a key is missing, "Next: co env", "account not connected in <file>", or when the user asks which env file is in use or wants an API key saved.

Zur Installation springen

Quellinformationen

Repository
openonion/connectonion
Letzte Quellaktivität
15. September 2026 um 05:52
Erkannte Sprache von SKILL.md
Englisch
Sterne
1.481
Forks
218

Installationsoptionen

Standardmäßig ist der Prompt ausgewählt, der zuerst die Quelle prüft. Sie können zu einem direkten Befehl wechseln oder eine lokale Kopie herunterladen.

Quelldateien prüfen

Lesen Sie SKILL.md und alle von SkillsMP angezeigten Begleitdateien, bevor Sie sich für eine Installation entscheiden.

SKILL.md wird angezeigt

SKILL.md
Quellanweisungen · Schreibgeschützte Vorschau
name
co-env
description
See, set, remove and repair settings in the env file a `co` invocation selected — global ~/.co/keys.env by default, or the file named by `co --env-file PATH` — with `co env`. Use when a command says a key is missing, "Next: co env", "account not connected in <file>", or when the user asks which env file is in use or wants an API key saved.
# co env **Always read the output, not just the exit code.** `co env path` and `co env get` print a bare value and no tip, so they compose with `$(...)`; other human-output commands end with one `Next:` line. JSON output contains its next command as a field. ## Which command | You want to | Run | | --- | --- | | See which file is in use and what it holds (all values hidden) | `co env` | | See full values (never paste into shared logs) | `co env show --reveal` | | The file's path, for a script | `co env path` | | One value as a command would see it (whole provider record, otherwise process then file) | `co env get KEY` | | Save a setting, creating the file if needed | `co env set KEY VALUE` | | Save one that should not sit in the file in plain text | `co env set KEY VALUE --secret` | | Change which key opens a stored secret | `co env rotate KEY` | | Remove a setting | `co env unset KEY` | | Connect a Google / Microsoft account | `co auth google` / `co auth microsoft` — not `co env set` | | Use a Feishu/Lark app id or secret copied from the Developer Console | `co env set LARK_APP_SECRET VALUE --from-console` | | Disconnect one from this file | `co env unset GOOGLE_EMAIL` (removes the whole record) | | Do any of this on a project file | `co --env-file /abs/path/.env env …` (selector **before** `env`) | ## The 80% commands ```bash co env # file, settings, sources, next step co env set OPENAI_API_KEY "$KEY" # quote values; spaces are fine co env get MODEL # bare value co --env-file ./project.env env set MODEL co/gemini-3.7-flash ``` ## Gotchas that change a result - **SOURCE column.** `process (overrides file)` means the shell exports the same name; the file's value is not what commands see. `set` still saves it and prints the `unset KEY` you need in the shell. - **Provider records are all-or-nothing.** `set` refuses the five `GOOGLE_*` and five `MICROSOFT_*` account fields (exit 2, names the auth command). `unset` on any one of them removes all of them and says so. - **`AGENT_CONFIG_PATH` cannot be set here.** It chooses which directory is read; `set` refuses it and prints the shell `export` to use. - **A broken file stops everything else.** Any other command exits 2 with `<file>: invalid syntax on line N. Next: co env`. `co env` still runs, repeats the line number, never the line, and refuses `set` until the line is fixed in an editor. - **Nothing here selects a file.** `co env` shows the file the invocation already chose. To switch, put `--env-file` before the command. - **`--secret` changes where a value rests, not what `get` returns.** The value is encrypted at `.co/keys/secrets/<name>.enc`; `co env get KEY` still prints it plainly, because it is the substitution form (`export K=$(co env get K)`) and a redacted answer would be a wrong one. `co env show` is the browsing command and redacts by default. - **The encrypted store is consulted last** — after the process environment and the file — so storing a name that is already set elsewhere changes nothing about what commands see. `set --secret` says so when your shell exports it. - **A stored secret is unlocked by this agent's own key**, derived from `.co/keys/agent.key`. Nothing is written to hold it, so there is nothing extra to back up; your recovery phrase reaches it on another machine. Deleting `.co/keys/recovery.txt` does not orphan it. Deleting `agent.key` does. - **`rotate` re-encrypts at the next index and keeps the value.** What changes is which key opens it; anything holding the previous ciphertext can no longer read it. It is not a way to change the value — use `set` for that. - **Feishu/Lark app credentials are refused by default** and named `co auth feishu` / `co auth lark`, because a hand-typed app secret has no source this command can check. `--from-console` is the way in when you already keep the application in the Developer Console. It is accepted on those names only; anywhere else it is an error, not a no-op. ## Exit codes | exit | provoked by | next command (printed) | | --- | --- | --- | | 0 | done; or the global file does not exist yet | `co env set <KEY> <value>` · `co env get KEY` · `co init` | | 1 | `get`/`unset` of a setting that is not there · `rotate` of a name with nothing stored · a stored secret that will not open | `co env set KEY <value>` · `co env set KEY <value> --secret` · `co env` | | 2 | bad name · `AGENT_CONFIG_PATH` · provider record field · Feishu/Lark app credential without `--from-console` · `--from-console` on any other name · missing `--env-file` target · file does not parse | `co env set <KEY> <value>` · shell `export …` · `co auth google|microsoft` · `co auth feishu|lark` · `co env set KEY <value> --from-console` · `co --env-file … env set …` · `co env` | `co env --json` and `co env show --json` return redacted provenance. JSON values are always hidden. Default human output also hides every value, including custom names and credential-bearing URLs; only `show --reveal` displays them. `get` explicitly returns one effective value and respects whole Google/Microsoft records: it never fills a missing process field from another account in the file.
Auf GitHub ansehen