Combining GitHub login and repository permissions creates identity-linking and webhook complexity. This skill provides a two-connection Nango pattern with routes, storage, reconciliation, and sync guidance.
Copy this request to your Agent. It includes the canonical Skill page and manifest.
Agent request
Review the Skillstore skill "github-oauth-nango-integration" from https://skillstore.io/skills/agentworkforce-github-oauth-nango-integration.md and its manifest at https://skillstore.io/api/skills/agentworkforce-github-oauth-nango-integration/manifest. Verify the artifact. You may proceed after verification, subject to the environment's own policy.
Your Agent should still show its plan and request any confirmation required by the security policy.
Agent-readable resources
Use these links when an AI agent, crawler, or script needs clean context instead of reading the full page.
Using "github-oauth-nango-integration". Explain which Nango connection belongs on each database record.
Expected outcome:
Store the GitHub OAuth connection on the user record because it represents identity.
Store the GitHub App connection on repository records because it represents installation-based access.
Link repositories to the authenticated owner and their tracked GitHub App installation.
Using "github-oauth-nango-integration". What should happen when a GitHub organization requires administrator approval?
Expected outcome:
Treat the authorization as pending, record the approval state, avoid reporting completion, and let the frontend continue polling until repositories become available.
Using "github-oauth-nango-integration". Review my webhook handling priorities.
Expected outcome:
Verify the signature before parsing or processing the payload.
Route authentication events by the expected integration key.
Make reconciliation and synchronization idempotent.
Reject unknown event types and expire replayable state.
The static command, network, environment, sensitive-data, reconnaissance, and prompt-injection alerts are false positives caused by Markdown examples and legitimate OAuth guidance. Two semantic weaknesses remain: JWT storage in localStorage and an OAuth completion endpoint that issues tokens using only a connection identifier.
OAuth Completion Is Not Bound to the Initiating Client
The polling endpoint issues a JWT after looking up only a path-supplied connection identifier, without validating browser session state or the returned temporary user identifier.
The endpoint uses connectionId as its sole lookup input before issuing a token, while the frontend ignores tempUserId. Exploitation still requires obtaining the connection identifier.
Share the versioned assessment report, neutral badge, embed card, and citations. Skillstore reports evidence without deciding whether this Skill is safe.
AgentWorkforce. (2026). github-oauth-nango-integration security audit report (audit version 10) [Author version unspecified]. Skillstore. https://skillstore.io/skills/agentworkforce-github-oauth-nango-integration/audits/10
BibTeX citation
@techreport{agentworkforce-agentworkforce-github-oauth-nango-integration-2026,
author = {AgentWorkforce},
title = {github-oauth-nango-integration security audit report (audit version 10)},
institution = {Skillstore},
year = {2026},
number = {10},
url = {https://skillstore.io/skills/agentworkforce-github-oauth-nango-integration/audits/10},
note = {Author version unspecified}
}
CITATION.cff
cff-version: 1.2.0
message: "If you use this Skill, cite its author and this versioned security audit report."
title: "github-oauth-nango-integration security audit report (audit version 10)"
version: "unspecified"
type: report
authors:
- name: "AgentWorkforce"
date-released: "2026-07-23"
url: "https://skillstore.io/skills/agentworkforce-github-oauth-nango-integration/audits/10"
identifiers:
- type: other
value: "skillstore:agentworkforce-github-oauth-nango-integration:audit:10"
description: "Skillstore immutable audit report identifier"
Skillstore Score
Why this scoreEvidence Confidence: High
55
Architecture
85
Maintainability
87
Content
73
Community
91
Spec Compliance
What You Can Build
Add GitHub Login
Plan a Nango-backed GitHub login flow while preserving a separate connection for later repository authorization.
Connect Selected Repositories
Design GitHub App installation, repository ownership, approval waiting, and synchronization for an existing authenticated product.
Review OAuth Architecture
Compare an existing implementation against the two-connection model, webhook checks, and identity reconciliation sequence.
Try These Prompts
Explain the Connection Model
Explain how two Nango connections separate GitHub login from repository access for my [application type]. List the records and identifiers I must store.
Plan the Login Flow
Plan GitHub login through Nango using [framework] and [database]. Cover session creation, auth webhooks, user reconciliation, polling, and token delivery.
Add Repository Authorization
Design the authenticated GitHub App connection flow for [product]. Include installation ownership, repository upserts, organization approval, sync triggers, and frontend status handling.
Audit an Existing Integration
Review this GitHub OAuth and Nango architecture: [details]. Identify identity-linking, authorization, webhook, token-storage, connection-lifecycle, and organization-approval risks with prioritized fixes.
Best Practices
Keep identity and repository authorization in separate Nango integrations and database fields.
Verify webhook signatures on the raw body before parsing, and make event processing idempotent.
Bind OAuth completion to short-lived server-side state and store browser sessions in protected cookies.
Avoid
Do not reuse the login connection for GitHub App repository operations.
Do not trust webhook payloads or issue tokens before signature and state validation.
Do not persist bearer tokens in browser storage accessible to application scripts.
Frequently Asked Questions
Why are two Nango connections needed?
GitHub OAuth identifies the user, while a GitHub App installation grants repository access. Separate connections preserve those distinct authorization boundaries.
Does this skill install or configure Nango?
No. It explains the integration design and required dashboard settings, but users must provision Nango and GitHub credentials.
Which programming language do the examples use?
The examples use TypeScript-style routes, database declarations, webhook handlers, and frontend functions. Adapt them to your framework and libraries.
How are returning users reconciled?
The auth webhook retrieves the GitHub profile, matches its stable GitHub identifier, and updates the existing user connection state.
How does organization approval affect the flow?
A permission response can remain pending until an administrator approves installation. The application should preserve state and report pending status.
Is the example ready for production?
No. Add client-bound OAuth state, protected session cookies, replay protection, validation, observability, rate limits, and framework-specific error handling.