Merge Upstream Main
SkillSecurityMerge the public openai/codex-security main branch into this fork's main branch and push the result to the fork remote. Use when asked to sync or merge upstream main for this repository.
Available today. Use it from your connected AI after setup.
No other account needed.
Connect ahel once, and every AI you use reads what you have installed.
Then ask your AI: use the Merge Upstream Main skill
What this skill tells your AI
The instructions your AI receives, as published by bex-co/bex-security in .claude/skills/merge-upstream-main/SKILL.md and read by ahel’s review.
Sync this fork from https://github.com/openai/codex-security.git with a Git
merge. Do not rebase or rewrite main.
Inspect The Repository
- Confirm the current repository, branch, worktree, and remotes with
git rev-parse --show-toplevel,git branch --show-current,git status --short --branch, andgit remote -v. - Continue only on
mainwith a clean worktree, including no untracked files. Do not switch branches, stash changes, or discard work automatically. Report the state and ask the user how to proceed when either condition is not met. - Read the applicable
AGENTS.mdinstructions before resolving conflicts or running checks.
Identify The Remotes
- The canonical upstream is the remote whose normalized GitHub repository is
openai/codex-security. Reuse an existing matching remote. If none exists, add it asupstreamwith the canonical URL above when that remote name is available. Ifupstreamalready points elsewhere, stop and ask rather than rewriting it. - The fork remote is the remote tracked by local
main, when that remote is not the canonical repository; otherwise prefer a noncanonicalorigin, then the sole remaining noncanonical remote. - Never select the canonical repository as the fork remote. If no fork remote exists, or multiple candidates make the destination ambiguous, stop and ask the user to identify or configure the fork remote. Do not guess a repository URL or rewrite an existing remote.
Show the selected upstream and fork remote names and URLs before fetching. This guards against pushing the fork merge to the canonical repository.
Use task-specific upstream_remote and fork_remote shell variables for the
selected remote names, and quote their expansions in commands.
Merge And Verify
- Fetch both selected remotes with
git fetch "$upstream_remote"andgit fetch "$fork_remote". - Fast-forward local
mainto the fork's remote-trackingmainwithgit merge --ff-only "$fork_remote/main". If local and forkmainhave diverged, stop and report the commits on each side instead of choosing a history strategy. - Merge upstream with
git merge --no-edit "$upstream_remote/main". A fast-forward is acceptable when the fork has no unique commits. - If conflicts occur, inspect each one and reconcile the fork's behavior with
the upstream change. Do not resolve all conflicts with a blanket
oursortheirsstrategy. Continue the merge only after the result is coherent. - Run the repository checks relevant to the merged or conflict-resolved files. A clean, conflict-free upstream merge does not require inventing new tests.
- Push local
mainwithgit push "$fork_remote" main:mainwithout force. - Fetch both remotes again, then verify:
git merge-base --is-ancestor "$upstream_remote/main" mainsucceeds.git rev-list --left-right --count "$fork_remote/main...main"reports0 0.git status --short --branchis clean.
Never force-push, rebase main, skip hooks, or discard changes. If a command
fails, diagnose it and continue only when doing so preserves both upstream and
fork history.
Report the selected remotes, whether the update fast-forwarded or created a merge commit, the resulting commit, checks run, push result, and final verification.
Signals
- GitHub stars
- 45
- Forks
- 11
- Last commit
- Sep 2026
Advanced
- Catalog kind
- skill
- Gateway key
merge-upstream-main- Source
- github.com/bex-co/bex-security