{
  "schema": "varexis-public-evidence-record/0.3",
  "generated_at_utc": "2026-10-16T02:40:06.177Z",
  "record_id": "VXI-EXT-PROCUREMENT-GITHUB-APP-IDENTITY-01-v1",
  "record_kind": "external_reference",
  "title": "GitHub Apps: Installation and user tokens carry different authority",
  "system": "GitHub Apps",
  "evidence_family": "vendor_evidence_review",
  "index_status": "PUBLIC_SAFE_SOURCE_REVIEW",
  "evidence_state": "PRIMARY_DOCUMENTATION_REVIEW_ONLY",
  "canonical_question": "Does a GitHub App user token have the same effective access as its installation token?",
  "near_questions": [
    "Does an installation token act as a person?",
    "How is a GitHub App user token constrained?",
    "Which repositories belong to the installation?",
    "Can user permissions narrow an app grant?",
    "Does one app permission list identify the actor?",
    "Which identity appears in the operation record?",
    "Can a revoked user grant affect app activity?",
    "What should a buyer record about token type?",
    "Does app installation prove authority for every repository?",
    "Can the same workflow use different actor types?",
    "When should an agent clarify the intended identity?",
    "Can I save a GitHub App authority review?"
  ],
  "supported_claims": [
    {
      "claim": "Installation tokens act for an installation, while user tokens act on behalf of a user. The guide describes user-token access as constrained by both the app and the user. Select the token type and repository scope explicitly; an app permission list alone does not identify the complete effective actor.",
      "reliance": "DOCUMENTED_CAPABILITY_ONLY"
    }
  ],
  "not_demonstrated_claims": [
    "Verified buyer configuration or effective access rights",
    "Independent execution, completeness or security testing",
    "Vendor certification, legal compliance or guaranteed suitability"
  ],
  "public_summary": "Installation tokens act for an installation, while user tokens act on behalf of a user. The guide describes user-token access as constrained by both the app and the user. Select the token type and repository scope explicitly; an app permission list alone does not identify the complete effective actor.",
  "related_record_ids": [
    "VXI-EXT-PROCUREMENT-ENTRA-CAE-01-v1",
    "VXI-EXT-PROCUREMENT-WORKSPACE-APP-SCOPES-01-v1",
    "VXI-EXT-PROCUREMENT-AWS-ROLE-CUTOFF-01-v1",
    "VXI-EXT-PROCUREMENT-GITLAB-PAT-ROTATION-01-v1",
    "VXI-EXT-PROCUREMENT-SNOWFLAKE-SECONDARY-01-v1"
  ],
  "source_review": {
    "source_type": "official_external_documentation",
    "source_title": "GitHub App token identity boundaries",
    "source_url": "https://docs.github.com/en/apps/creating-github-apps/about-creating-github-apps/best-practices-for-creating-a-github-app",
    "checked_on": "2026-10-16",
    "candidate_record_id": "VXI-EXT-PROCUREMENT-GITHUB-APP-IDENTITY-01-v1",
    "candidate_record_sha256": "d69f69ae633646a4e33246beab3e664639386ba15788329e0f58b8c9861d382e",
    "method": "Primary documentation reviewed for the published bounded statement.",
    "deployment_tested_by_varexis": false,
    "revalidation": "The delivered snapshot preserves the review date shown. Recheck current primary documentation and deployment context before relying on present applicability; payment does not trigger fresh research."
  },
  "answer_policy": {
    "classification": "DOCUMENTED_WITH_DEPLOYMENT_BOUNDARY",
    "bounded_answer": "Installation tokens act for an installation, while user tokens act on behalf of a user. The guide describes user-token access as constrained by both the app and the user. Select the token type and repository scope explicitly; an app permission list alone does not identify the complete effective actor.",
    "required_buyer_context": "GitHub Apps: Token type, installation scope, user rights and app permissions; buyer configuration and operational evidence are required.",
    "missing_evidence": "A broader claim needs evidence matching the intended use. Payment does not upgrade the evidence state."
  },
  "private_boundary": "Raw logs, thresholds, private paths, source code, protected mechanisms and reconstruction-level details are excluded from public and paid delivery.",
  "decision_profile": {
    "schema": "varexis-vendor-evidence-review/1",
    "review_status": "documentation_review_only",
    "checked_on": "2026-10-16",
    "claim_to_check": "All tokens issued to one GitHub App have equivalent authority.",
    "documented_statement": {
      "status": "documented",
      "statement": "Installation tokens act for an installation, while user tokens act on behalf of a user. The guide describes user-token access as constrained by both the app and the user. Select the token type and repository scope explicitly; an app permission list alone does not identify the complete effective actor.",
      "source_ids": [
        "github-app-identity"
      ]
    },
    "buyer_evidence_required": [
      "Token type and installation or user identity.",
      "App permissions and selected repository access.",
      "User permissions and observed action attribution where applicable."
    ],
    "review_condition": {
      "status": "varexis_review_policy",
      "statement": "Do not approve an operation from app permissions alone when its identity path is unspecified."
    },
    "unknowns": "The buyer configuration, contract, effective entitlement and operational evidence have not been inspected. Missing evidence does not establish absence or failure of the feature.",
    "evidence_sources": [
      {
        "source_id": "github-app-identity",
        "url": "https://docs.github.com/en/apps/creating-github-apps/about-creating-github-apps/best-practices-for-creating-a-github-app",
        "final_url": "https://docs.github.com/en/apps/creating-github-apps/about-creating-github-apps/best-practices-for-creating-a-github-app",
        "title": "GitHub App token identity boundaries",
        "checked_on": "2026-10-16",
        "sha256": "533710836538b22f00d955dba07b79bc318c159040afa9dd6b66b0829eb56463",
        "bytes": 262356
      }
    ],
    "observed_deployment": false,
    "commercial_reliance_boundary": "Procurement evidence support only; no supplier clearance, legal conclusion, configuration audit or verification of the buyer's claim is supplied.",
    "paid_value": {
      "decision_context": "Save which actor and permission intersection were considered before approving a repository action.",
      "free": "Complete review, practical questions, sources and limitations; may be saved locally.",
      "single_request": "Existing server-saved version-bound route snapshot for later authenticated retrieval.",
      "evidence_receipt": "The same snapshot plus the existing unsigned delivery receipt.",
      "excluded": [
        "Fresh vendor research",
        "Continuous monitoring or change alerts",
        "Testing the buyer configuration",
        "Private evidence or vendor certification"
      ],
      "integrity": "Hashes identify content versions; they do not prove truth or provide a signature."
    },
    "revalidation": {
      "trigger": "A saved purchase does not recheck the source or buyer configuration.",
      "specific_watch": "Token type, installation scope, user rights and app permissions"
    }
  },
  "paid_access_note": "The full published answer and boundaries are free. Paid access saves the selected route and source versions, with an unsigned receipt when purchased. Preview coverage before paying. Fresh research, bespoke assessment and protected evidence are excluded.",
  "service_route": {
    "request_guide": "/varexis-index/request.html",
    "request_workflow": "/varexis-index/request-workflow.json",
    "service_id": "single_request",
    "service_routes_url": "/varexis-index/service-routes.json",
    "payment_required": true,
    "availability_endpoint": "/api/index/capabilities",
    "operational_status": "AUTOMATIC_SERVICE_CAPABILITIES_GATED",
    "checkout_url": "/index-access"
  },
  "authority_boundary": "VAREXIS-INDEX informs evidence reliance. It does not provide advice, certification, deployment authority, security assurance, production approval, or guarantee.",
  "human_page": "/varexis-index/catalog.html#github-app-installation-user-authority",
  "machine_readable_record": "/varexis-index/records/github-app-installation-user-authority.json"
}
