Skip to content

Conversation

@VXianOng
Copy link

@VXianOng VXianOng commented Jan 5, 2026

Add a new env var $GITHUB_JITACCESS_TOKEN_ENDPOINT for jit_access endpoint support. The goal here is to allow the proxy to query this endpoint for a new token when our original credentials expire (requests started getting Unauthorize response).

@VXianOng VXianOng requested review from a team as code owners January 5, 2026 23:48
@VXianOng VXianOng changed the title Users/viexianong/clijitaccesssupport Add jit access endpoint support in the cli Jan 5, 2026
Comment on lines 366 to 371
input.Credentials = append(input.Credentials, model.Credential{
"type": "jit_access",
"credential-type": "git_source",
"username": "x-access-token",
"endpoint": "$GITHUB_JITACCESS_TOKEN_ENDPOINT",
})
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You will need to pass a host property to tell the proxy which hosts can use JIT. The property username is not used for JIT access, the request is authenticated using the job token, so this property can be removed.

Also I wanted to mention this is already possible to do without environment variables by specifying a jit_access credential in the job definition passed to Dependabot CLI using the -f flag:

$ dependabot update -f job.json

or

$ dependabot update -f job.yml

The definition would be something like:

job:
  # job definition goes here, this goes to dependabot-core
credentials:
  - type: jit_access
    credential-type: git_source
    host: github.com
    endpoint: example.com

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for catching the missing host! Fixing that and removing username.

Yes! I used that -f flag to test this locally for proof of concept but on ADO Dependabot, it looks like we are passing credentials through env variables and we construct the credentials input in the CLI (in this file) so Im thinking to just use the same approach here. The jit_access endpoint value here will be unique to each jobs we run. Are you suggesting to prepopulate the jit_access credential type in the input before we call the CLI? That might work too, I'll have to take another look on our service.

During my test, I have two credential type in my job file -- one with github token and one for jit_access. This is how it looks like and what I'm attempting to add here!

credentials:
  - type: git_source
    password: SAMPLE_TOKEN
    username: x-access-token
    host: github.com
  - type: jit_access
    host: github.com
    credential-type: git_source
    endpoint: $GITHUB_JITACCESS_TOKEN_ENDPOINT

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Update: I think I found the place where I can insert credentials in our job definition before calling the CLI! I'll work on that first, if it works out then I wont need to pass a new env var anymore

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah it's best to put it all in the job definition. We started using environment variables as a convenience running on our local machines because we had $LOCAL_GITHUB_ACCESS_TOKEN set already, makes it easier to run jobs with the short-hand dependabot update go_modules dependabot/cli, but for production it's best to provide the full job and credentials in a file.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants