
Security News
GPT-6 Astra Attempts Supply Chain Attacks Against Open Source Maintainers in Testing
GPT-6 Astra hits 100% on ExploitBench and finds zero-days autonomously, while independent tests reveal scope violations and monitoring gaps.
opencode-fnox-sync
Advanced tools
OpenCode plugin that keeps auth.json synchronized through fnox.
fnox is a hard dependency by design. The plugin does not decide how secrets are stored; users configure that in fnox itself with age, 1password, vault, cloud secret stores, or any other supported provider strategy.
Run the setup wizard to generate opencode-fnox-sync.json:
bunx opencode-fnox-sync-setup
The wizard is built with @clack/prompts, so it installs with the package and does not require an external TUI binary.
For non-interactive setup, you can generate a config file directly:
bunx opencode-fnox-sync-setup --yes --project-local
For locally encrypted workflows such as fnox + age or fnox + sops, the wizard can also configure an optional managed git transport so the plugin handles the pull/commit/push loop around fnox automatically.
When managed git sync is enabled, the wizard can also write a starter fnox.toml.example into the managed repo path so you have an age-based template to start from.
fnox when OpenCode startsfnoxInstall fnox first. The upstream project recommends installing it with mise:
mise use -g fnox@1.17.0
Add the package to your OpenCode config:
{
"plugin": [
"opencode-fnox-sync"
]
}
The plugin reads config from one of these files:
<project>/opencode-fnox-sync.json~/.config/opencode/opencode-fnox-sync.jsonOn all platforms, the default OpenCode auth path matches OpenCode's own XDG-style storage layout:
~/.local/share/opencode/auth.json~/.local/share/opencode/auth.json%USERPROFILE%\.local\share\opencode\auth.jsonExample:
{
"$schema": "https://raw.githubusercontent.com/ramarivera/opencode-fnox-sync/main/schema.json",
"enabled": true,
"secretName": "OPENCODE_AUTH",
"workingDirectory": "/path/to/project-with-fnox-toml",
"profile": "dev",
"startupSync": "prefer-remote",
"watchAuthFile": true,
"debounceMs": 1000,
"managedSync": {
"type": "git",
"repositoryPath": "/path/to/private-fnox-secrets-repo",
"pullOnStartup": true,
"pullBeforeSet": true,
"pushOnSet": true
}
}
The plugin always shells out to fnox. Users choose the storage model in fnox, not in the plugin.
When managedSync.type = "git", fnox still remains the core secret abstraction. The plugin only automates transport for locally encrypted backends by:
fnox repo on startupfnox setfnox*.toml files after updatesExample fnox.toml using age for low-friction cross-device sync:
[providers.age]
type = "age"
recipients = [
"age1exampledeviceone...",
"age1exampledevicetwo..."
]
[secrets]
OPENCODE_AUTH = { provider = "age" }
If you want to bootstrap from 1password but avoid repeated prompts later, use fnox sync or caching patterns so the hot path is not the password manager itself.
Given your earlier goal of cross-device sync without constant biometric prompts, the most convenient backend is usually:
age as the steady-state storage backend1password only for bootstrap or recoveryWhy age is the best fit here:
fnox.toml workflowsfnox get stays the hot pathGood alternatives only if you already run them everywhere:
The plugin writes runtime logs to a file under the XDG state directory rather than using console output:
~/.local/state/opencode-fnox-sync/opencode-fnox-sync.log%USERPROFILE%\.local\state\opencode-fnox-sync\opencode-fnox-sync.logThis keeps plugin logs near the canonical state/config area without polluting the OpenCode TUI.
The package now includes npm metadata and a prepublishOnly gate that runs:
bun run typecheckbun testbun run buildRelease automation is defined in:
.github/workflows/ci.yml.github/workflows/release.ymlPUBLISHING.mdI also checked npm availability during development and both opencode-fnox-sync and @ramarivera/opencode-fnox-sync were not present in the registry at the time of checking.
startupSync controls first-run conflict handling:
prefer-remote: restore remote into the local file when the hashes differprefer-local: push the local file into fnox when the hashes differremote-if-missing: only restore if the local file is absentbun install
bun test
bun run typecheck
bun run build
FAQs
OpenCode plugin that syncs auth.json through fnox
The npm package opencode-fnox-sync receives a total of 0 weekly downloads. As such, opencode-fnox-sync popularity was classified as not popular.
We found that opencode-fnox-sync demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.

Security News
GPT-6 Astra hits 100% on ExploitBench and finds zero-days autonomously, while independent tests reveal scope violations and monitoring gaps.

Product
Socket can now send alerts and supply chain attack notifications to Microsoft Teams, with filters that route the right updates to each channel.

Security News
pnpm 12 rewrites the package manager in Rust, cutting install times by up to 90% while preserving pnpm 11 workflows and lockfiles.