diff --git a/fern/products/cli-generator/authentication.mdx b/fern/products/cli-generator/authentication.mdx index ae54d89a3..40fbe51f9 100644 --- a/fern/products/cli-generator/authentication.mdx +++ b/fern/products/cli-generator/authentication.mdx @@ -271,6 +271,8 @@ With a profile selected, each value resolves as `explicit flag → selected prof Non-secret settings live in `~/.config//profiles.toml`. Secrets are never written to that file: credentials go to the OS keychain under a profile-scoped account, the same store `auth login` uses. +On macOS, the CLI reads and writes the Keychain through Apple's `/usr/bin/security` tool, so the access dialog names `security` rather than your CLI, and one **Always Allow** lasts across rebuilds and upgrades. A credential saved by an earlier release prompts once after upgrading. If the user denies the dialog or the Keychain is locked, the command reports that the saved credential couldn't be read from the macOS Keychain rather than reporting it as missing. Releases can also [sign the macOS binaries](/learn/cli-generator/get-started/publishing#sign-macos-binaries). + `--parent ` sets single-level inheritance. A child inherits its parent's credential, base URL, server variables, parameter defaults (child wins per key), retries, and transport settings. It doesn't inherit the default output format, since output shape belongs to the invocation rather than the tenant. Because the parent is resolved at read time, editing it propagates to its children. ## Help output diff --git a/fern/products/cli-generator/publishing.mdx b/fern/products/cli-generator/publishing.mdx index cf2a1938a..9ce76143e 100644 --- a/fern/products/cli-generator/publishing.mdx +++ b/fern/products/cli-generator/publishing.mdx @@ -347,6 +347,18 @@ The CI workflow then builds binaries for all platforms, attaches the archives an On public repositories, each build also signs its archives with GitHub build provenance attestations. Private repositories skip that step by default, since GitHub supports attestations on private repositories only with GitHub Enterprise Cloud; set [`distribution.githubAttestations`](/learn/cli-generator/get-started/configuration#config-options) to `true` to attest on Enterprise Cloud or `false` to drop attestations entirely. +### Sign macOS binaries + +With CLI generator `0.58.2` or later, the release workflow signs the macOS binaries when the CLI repository has all three of these Actions secrets, under **Settings** > **Secrets and variables** > **Actions**: + +| Secret | Value | +| --- | --- | +| `CODESIGN_CERTIFICATE` | An Apple Developer ID certificate exported as a `.p12` file, base64-encoded (for example, `base64 -i certificate.p12`) | +| `CODESIGN_CERTIFICATE_PASSWORD` | The password the `.p12` file was exported with | +| `CODESIGN_IDENTITY` | The signing identity passed to `codesign`, such as `Developer ID Application: My Org (TEAMID)` | + +A binary signed with the same identity on every release keeps the macOS Keychain's **Always Allow** across upgrades of your CLI. If any of the three secrets is missing, the workflow logs that the macOS binaries stay unsigned and releases them unsigned. Signing doesn't include notarization. + ## Build targets The CI workflow produces statically linked binaries for: