nikivdev/code · error
release signing store is only supported on macOS
Error message
release signing store is only supported on macOS
What it means
The `f release signing store` subcommand imports a .p12 identity into the macOS keychain, which only makes sense on macOS. It uses a compile-time cfg!(target_os = "macos") check and bails at runtime on any other OS.
Source
Thrown at src/release_signing.rs:129
let text = String::from_utf8_lossy(&output.stdout);
let mut out = Vec::new();
for line in text.lines() {
// Example:
// 1) <hash> "Developer ID Application: Name (TEAMID)"
let Some(quoted) = line.split('"').nth(1) else {
continue;
};
let name = quoted.trim();
if !name.is_empty() {
out.push(name.to_string());
}
}
Ok(out)
}
fn store(opts: ReleaseSigningStoreOpts) -> Result<()> {
if !cfg!(target_os = "macos") {
bail!("release signing store is only supported on macOS");
}
let p12_path = opts
.p12
.clone()
.context("--p12 is required (path to exported .p12)")?;
let p12_bytes = fs::read(&p12_path)
.with_context(|| format!("failed to read p12 file at {}", p12_path.display()))?;
let identity = opts.identity.clone().context("--identity is required")?;
let password = opts
.p12_password
.clone()
.context("--p12-password is required")?;
if !identity.starts_with("Developer ID Application:") {
eprintln!(
"Warning: identity does not look like a Developer ID Application certificate: {}",View on GitHub (pinned to a747e741ae)
Solutions
- Run the store command on a macOS machine
- On Linux/Windows, supply signing material another way (e.g. set env vars / secrets directly with `f env set` or `gh secret set`)
- Gate the step in CI with `if: runner.os == 'macOS'`
Example fix
// before (linux CI) - run: f release signing store --p12 cert.p12 // after - run: f release signing store --p12 cert.p12 if: runner.os == 'macOS'
Defensive patterns
Strategy: validation
Validate before calling
if (process.platform !== "darwin") {
throw new Error("f release signing store requires macOS");
} Type guard
const isMacOS = (): boolean => process.platform === "darwin";
Try / catch
try {
run(["f", "release", "signing", "store", ...args]);
} catch (e) {
if (String(e).includes("only supported on macOS")) {
console.error("Run this step on a macOS runner.");
} else throw e;
} Prevention
- Gate macOS-only steps in CI with an OS condition (e.g. runs-on: macos-latest)
- Detect the platform in setup scripts before invoking signing commands
- Use platform-appropriate secret provisioning on Linux/Windows
When it happens
Trigger: Calling `f release signing store ...` (via `run`) on Linux or Windows.
Common situations: Developers on Linux trying to configure iOS/macOS release signing; CI runners on Ubuntu executing a macOS-oriented setup script.
Understand the failure class
Background: "unsupported platform" / "not supported on this platform" errors: what they mean and how to fix them — this error's family across 47 libraries.
Related errors
- `security find-identity` failed
- codex skill-eval launchd install failed: {}
- pbcopy exited with status {}
- clipboard not supported on this platform
- failed to open browser
AI-assisted analysis of nikivdev/code@a747e741ae (2026-09-01).
Data as JSON: /api/errors/41c78a784bd69c53.
Report an issue: GitHub.