Managing repository information becomes harder as a GitHub organization grows.

A small team may have ten repositories and know exactly what each one does. A larger organization can have hundreds of repositories owned by different teams, running different technologies, and serving different environments.

At that point, simple repository names are not enough.

You may want to know:

  • Which team owns a repository?

  • Is it used in production?

  • Is it customer-facing?

  • What type of application is it?

  • What compliance requirements apply?

  • How critical is the application?

GitHub repository custom properties are designed to store this kind of structured information. Organizations can define custom properties and assign values to repositories, making the information easier to search, filter, and use for repository management.

GitHub has also introduced Copilot-assisted suggestions for custom property definitions. Instead of starting with an empty list of allowed values, administrators can ask Copilot for suggestions and then review those values before using them.

The useful part is not simply generating values faster. It is using Copilot to get a starting point while keeping the final repository metadata under human control.

What Are Repository Custom Properties?

A repository custom property is structured metadata associated with a repository.

For example, an organization could define:

owner-team
environment
application-type
criticality
internet-facing

A repository could then have values such as:

Repository: orders-api

owner-team: commerce
environment: production
application-type: API
criticality: high
internet-facing: yes

This information is different from source code.

It describes the repository and the application it represents.

GitHub allows organizations to define custom properties with different types, including single-select, multi-select, and other supported property types.

Why Repository Metadata Becomes Important

Repository metadata is easy to ignore when an organization is small.

Suppose your organization has five repositories:

orders-api
customer-api
admin-portal
reporting-service
internal-tools

Everyone probably knows what they are.

Now imagine 500 repositories.

The repository list might contain:

orders-api
orders-worker
orders-events
customer-api
customer-worker
customer-ui
...

Names alone do not tell you:

  • Who owns each application

  • Which environment it supports

  • Whether it is externally accessible

  • Whether it is business-critical

  • Whether additional security controls apply

Structured properties solve this problem.

Where GitHub Copilot Helps

Creating a property is straightforward.

The difficult part is often deciding which values belong to it.

For example, suppose you create:

Property:
application-type

You might initially think of:

API
Web
Worker
Library

But another administrator may think of:

Backend
Frontend
Service
CLI
Function

Both lists can be reasonable.

Copilot can help generate suggestions for allowed values while you define the property. GitHub's September 2026 announcement describes this feature as a way for Copilot to suggest values for custom property definitions.

You can then review the suggestions and decide which values actually make sense for your organization.

Copilot Is Helping With the Schema

This distinction is important.

Copilot is not simply filling random repository fields.

The feature helps administrators while defining the allowed values for a custom property.

Think of the process like this:

Administrator
      |
      v
Create Property
      |
      v
Describe Property
      |
      v
Copilot Suggestions
      |
      v
Review Values
      |
      v
Save Property Definition

The administrator remains responsible for the final definition.

That makes the feature more useful than simply generating arbitrary metadata.

A Simple Example

Imagine you want to classify repositories by application type.

You create:

application-type

The property could use a single-select field.

You need to decide which values should be allowed.

Instead of manually creating the list from scratch, Copilot can provide suggestions.

You might end up with a list such as:

API
Web Application
Worker
Library
CLI

You should then review the list.

If your organization does not build CLI applications, there is no reason to keep that value.

Likewise, if your organization distinguishes between frontend and backend applications, you may want a different taxonomy.

Build a Property Model Before Using Copilot

Copilot is more useful when you already understand the information you want to manage.

Start by asking:

What do we need to know about our repositories?

A reasonable initial model might be:

Property

Purpose

owner-team

Identifies the responsible team

environment

Identifies the primary environment

application-type

Describes the application

criticality

Indicates business importance

internet-facing

Identifies externally accessible applications

compliance

Identifies applicable requirements

This gives Copilot a useful context for suggesting values.

Example: Environment

Consider this property:

environment

A simple value set might be:

development
staging
production

This is a good example of a property that should remain simple.

Do not create:

dev
development
DEV
test
testing
qa
stage
staging
prod
production

unless these genuinely represent different states in your organization.

The goal is consistent metadata.

Example: Application Type

For:

application-type

you might define:

API
Web
Worker
Library
CLI

The exact values should depend on your organization's architecture.

For example, a company with serverless workloads might need:

Function

while another organization may not need it.

This is where Copilot suggestions can save time, but human review is still necessary.

Example: Criticality

Consider:

criticality

You could use:

low
medium
high

But before adopting these values, define what they mean.

For example:

low
    Limited business impact

medium
    Noticeable business impact

high
    Significant business impact

The labels themselves are not enough.

Different teams may interpret "high" differently unless the organization defines the classification.

Single-Select Properties

Single-select properties are useful when a repository should have one value from a controlled list.

For example:

environment

development
staging
production

Another example:

criticality

low
medium
high

The advantage is consistency.

Automation can safely look for:

environment = production

without worrying about variations such as prod or Production.

Multi-Select Properties

Some information cannot be represented by a single value.

Compliance is a common example.

A repository could potentially belong to multiple categories:

compliance

SOC 2
PCI
FedRAMP
Internal

A multi-select property allows more than one value to be assigned.

The important thing is to define the categories carefully.

If two values overlap heavily, users may not know which one to select.

Do Not Let Copilot Design Your Governance Policy

This is probably the most important practical point.

Copilot can suggest values.

It should not be treated as the authority for your organization's governance model.

For example, suppose Copilot suggests:

criticality

Low
Medium
High
Critical

That does not mean your organization should automatically adopt all four.

Ask:

  • Does our organization actually use these classifications?

  • What does each classification mean?

  • Can teams consistently assign them?

  • Will automation depend on them?

  • Are these terms already used elsewhere?

  • Do security or compliance teams have existing definitions?

The final taxonomy should come from your organization's requirements.

Using Properties With Repository Governance

Custom properties become more valuable when they are connected to governance workflows.

For example:

internet-facing = yes

could identify repositories that require additional controls.

Conceptually:

Repository
    |
    v
Custom Property
    |
    v
Repository Selection
    |
    v
Governance Rule

GitHub supports using custom properties to target repositories with rulesets, which can help organizations apply repository governance consistently.

This is one reason to avoid arbitrary property values.

If automation depends on them, consistency becomes important.

Custom Properties and Copilot Instructions Are Different

GitHub Copilot also supports repository-level instructions.

For example:

.github/copilot-instructions.md

can contain project-specific guidance for Copilot.

It might say:

# Development Guidelines

- Use nullable reference types.
- Prefer async APIs for I/O.
- Write unit tests for business logic.
- Follow the existing naming conventions.

This tells Copilot how it should work with the repository.

Custom properties answer a different question:

What describes this repository?

Copilot instructions answer:

How should Copilot work with this repository?

They solve different problems.

Automating Property Assignment

Once property definitions are established, organizations can also manage property values programmatically.

GitHub provides REST API support for repository custom properties, including reading and updating property values.

For example, a provisioning system could conceptually perform:

Create Repository
       |
       v
Assign Owner
       |
       v
Assign Application Type
       |
       v
Assign Environment
       |
       v
Apply Repository Rules

This can be useful when new repositories are created regularly.

Instead of asking every developer to manually configure metadata, the repository provisioning process can assign standard values.

Example API Request

A repository custom property update can be performed through GitHub's REST API.

A simplified request looks like this:

curl -L \
  -H "Accept: application/vnd.github+json" \
  -H "Authorization: Bearer $GITHUB_TOKEN" \
  -H "X-GitHub-Api-Version: 2026-03-10" \
  https://api.github.com/repos/OWNER/REPOSITORY/properties/values

The actual request body and permissions depend on the properties you are updating and the authentication model used by your organization.

Do not put access tokens directly into source code or commit them to a repository.

Keep Property Names Stable

Once automation starts depending on a property, changing its name can have consequences.

For example:

owner-team

might be referenced by scripts and governance rules.

Renaming it to:

team-owner

could require changes in several places.

Treat important property definitions as part of your organization's configuration model.

Before creating a property, decide:

  • What does it mean?

  • Who owns it?

  • What values are allowed?

  • Who updates it?

  • Which automation depends on it?

Avoid Free-Form Metadata When Possible

Suppose you create:

owner-team

as a free-text field.

One repository might contain:

Payments

another:

payments

and another:

Payment Team

A human can understand that these may refer to the same group.

An automation script cannot safely assume that.

Controlled values are easier to search and automate.

For example:

payments
platform
data
commerce

is much cleaner.

Create a Small Taxonomy

Do not start with 30 properties.

A practical first version could contain only:

owner-team
environment
application-type
criticality

After using them for a while, identify gaps.

Maybe your security team needs:

internet-facing

Add it later.

Maybe compliance needs:

compliance

Add that when there is a real requirement.

This keeps the metadata model manageable.

Review Existing Repositories

Creating the definition is only half the job.

You also need to apply the properties to existing repositories.

Suppose your organization has:

500 repositories

and only:

50 repositories

have property values.

The metadata model will not provide much value until the remaining repositories are classified.

A migration can be handled gradually:

500 repositories
       |
       v
Classify critical repositories
       |
       v
Classify production repositories
       |
       v
Classify remaining repositories

Automation can help once the rules for assigning values are well defined.

Common Mistakes

Creating Properties Without a Use Case

Do not create a property simply because it sounds useful.

Ask how the organization will use it.

Accepting Every Copilot Suggestion

Suggestions are a starting point, not an organizational standard.

Review them.

Using Similar Values

Avoid:

prod
production
Production

when all three mean the same thing.

Mixing Different Concepts

Do not make one property responsible for several unrelated concepts.

For example:

team-and-environment

is harder to manage than:

owner-team
environment

Making Everything Free-Form

Free-text metadata is harder to filter and automate consistently.

Forgetting Property Ownership

Someone should be responsible for maintaining the definition.

Otherwise, old values remain long after the organization has changed.

A Practical Workflow

A simple workflow for introducing Copilot-assisted custom properties can look like this.

Step 1: Identify the Information

List the repository information your organization actually needs.

Step 2: Create the Property

Give it a clear name and description.

Step 3: Choose the Property Type

Decide whether the property needs a single value, multiple values, or another supported type.

Step 4: Use Copilot Suggestions

Use Copilot to generate a starting point for allowed values where appropriate.

Step 5: Review the Suggestions

Remove values that do not apply.

Combine duplicates.

Add organization-specific values when necessary.

Step 6: Define the Meaning

Document what each value represents.

Step 7: Apply the Properties

Assign values to repositories.

Step 8: Connect Automation

Use APIs, repository management workflows, or governance rules where appropriate.

Step 9: Review Periodically

Remove obsolete values and update definitions when organizational requirements change.

A Practical Example for a .NET Team

Imagine a company with several .NET services.

The team creates these properties:

runtime
application-type
environment
owner-team
criticality

A repository might look like:

Repository:
customer-api

runtime:
.NET

application-type:
API

environment:
production

owner-team:
customer-platform

criticality:
high

Another repository could be:

Repository:
invoice-worker

runtime:
.NET

application-type:
Worker

environment:
production

owner-team:
billing

criticality:
medium

Now the organization can distinguish the repositories without relying on repository names or README files.

When Copilot Provides the Most Value

Copilot-assisted suggestions are particularly useful when:

  • You are creating a new property.

  • The allowed values are not obvious.

  • Multiple administrators manage repositories.

  • You want to explore possible classifications.

  • You are building an initial metadata model.

It is less useful when the organization already has a formally defined taxonomy.

If your security team has already defined exactly which compliance classifications are allowed, use that approved list rather than replacing it with generated suggestions.

Best Practices

Keep Definitions Simple

A property should represent one clear concept.

Use Consistent Naming

Use predictable property names such as:

owner-team
environment
application-type

Keep Values Controlled

Avoid unnecessary variations.

Document Meaning

A value without a clear definition can be interpreted differently by different teams.

Review Before Automation

Do not build automation around a property until its definition is stable.

Keep Human Review

Copilot can speed up the design process, but the organization should remain responsible for the final metadata model.

Summary

GitHub repository custom properties give organizations a structured way to describe and classify repositories.

Instead of relying only on repository names, README files, or manually maintained spreadsheets, teams can store information such as:

owner-team
environment
application-type
criticality
internet-facing
compliance

GitHub Copilot can help administrators create custom property definitions by suggesting allowed values.

The real value comes from combining those properties with consistent repository management and automation.

A good approach is simple:

Define the information
        |
        v
Create the property
        |
        v
Use Copilot for suggestions
        |
        v
Review and standardize values
        |
        v
Assign repositories
        |
        v
Automate where useful

Copilot can reduce the effort involved in creating the initial property model, but it should not replace organizational decisions about classification and governance.

For a growing GitHub organization, a small, well-defined set of repository properties is usually more useful than a large collection of loosely defined fields. Once those properties become consistent, they can support better repository discovery, automation, and governance across the organization.