Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
39 commits
Select commit Hold shift + click to select a range
b23a627
docs(agents): 📝 enhance guidance for checkin.sh updates\n\nEnhanced t…
tmeckel Oct 24, 2025
4b319b9
refactor(template): ♻️ update template handling for permission show\n…
tmeckel Oct 24, 2025
4dc43df
refactor(text): ♻️ improve text formatting utilities\n\nImproved inte…
tmeckel Oct 24, 2025
2425dfc
refactor(docs): ♻️ fix man page generation for new commands\n\nFixed …
tmeckel Oct 24, 2025
cd625e9
refactor(docs): ♻️ update markdown generation logic\n\nUpdated intern…
tmeckel Oct 24, 2025
b5a7d5e
test(docs): ✅ add tests for markdown generation edge cases\n\nAdded c…
tmeckel Oct 24, 2025
2ab3c96
feat(root): ✨ integrate help for security permission show\n\nIntegrat…
tmeckel Oct 24, 2025
af3c29b
refactor(security): ♻️ deprecate and remove namespace/shared/acl.go\n…
tmeckel Oct 24, 2025
273de25
refactor(security): ♻️ deprecate and remove namespace/shared/shared.g…
tmeckel Oct 24, 2025
d854ac7
feat(security): ✨ introduce shared/acl.go for common ACL operations\n…
tmeckel Oct 24, 2025
3730f91
feat(security): ✨ add shared.go for common permission utilities\n\nAd…
tmeckel Oct 24, 2025
cdb3479
feat(security): ✨ implement shared/target.go for permission targets\n…
tmeckel Oct 24, 2025
55c6c18
refactor(security): ♻️ reorganize permission command factory\n\nReorg…
tmeckel Oct 24, 2025
da46f15
refactor(security): ♻️ enhance permission list command with shared AC…
tmeckel Oct 24, 2025
8ee5df2
fix(security): 🐛 correct namespace list output after refactor\n\nFixe…
tmeckel Oct 24, 2025
2927d4d
refactor(security): ♻️ update namespace show to use new shared module…
tmeckel Oct 24, 2025
e9c1daf
feat(security): ✨ add permission show subcommand\n\nAdded a new \ sub…
tmeckel Oct 24, 2025
6a6ef50
docs(security): 📖 add documentation for permission show command\n\nAd…
tmeckel Oct 24, 2025
5e76e58
docs(graph): 📖 regenerate graph user list documentation\n\nRegenerate…
tmeckel Oct 24, 2025
deb6b59
docs(cli): 📖 update help reference with security permission changes\n…
tmeckel Oct 24, 2025
5413993
docs(pr): 📖 regenerate PR comment documentation\n\nRegenerated docs/a…
tmeckel Oct 24, 2025
416adbe
docs(pr): 📖 update PR diff documentation\n\nUpdated docs/azdo_pr_diff…
tmeckel Oct 24, 2025
92434ee
docs(pr): 📖 regenerate PR list docs post-core updates\n\nRegenerated …
tmeckel Oct 24, 2025
ebe4988
docs(pr): 📖 update PR merge documentation\n\nUpdated docs/azdo_pr_mer…
tmeckel Oct 24, 2025
47215c0
docs(pr): 📖 regenerate PR view docs\n\nRegenerated docs/azdo_pr_view.…
tmeckel Oct 24, 2025
c0a7a88
docs(pr): 📖 update PR vote documentation\n\nUpdated docs/azdo_pr_vote…
tmeckel Oct 24, 2025
dad3ab2
docs(project): 📖 regenerate project create docs\n\nRegenerated docs/a…
tmeckel Oct 24, 2025
fa87436
docs(project): 📖 update project delete documentation\n\nUpdated docs/…
tmeckel Oct 24, 2025
f9ed7d9
docs(project): 📖 regenerate project list docs\n\nRegenerated docs/azd…
tmeckel Oct 24, 2025
7127fd1
docs(repo): 📖 update repo clone documentation\n\nUpdated docs/azdo_re…
tmeckel Oct 24, 2025
b209b7f
docs(repo): 📖 regenerate repo list documentation\n\nRegenerated docs/…
tmeckel Oct 24, 2025
c008501
docs(security): 📖 update security group membership list docs\n\nUpdat…
tmeckel Oct 24, 2025
72b5532
docs(security): 📖 regenerate security permission overview\n\nRegenera…
tmeckel Oct 24, 2025
2eb1050
docs(security): 📖 update permission list documentation\n\nUpdated doc…
tmeckel Oct 24, 2025
c0f8826
refactor: add ResolveMemberDescriptor to extension client
tmeckel Oct 24, 2025
ff54f13
refactor: use Extensions client for member resolution
tmeckel Oct 24, 2025
7a0aef4
refactor: return SubjectTarget struct from parser
tmeckel Oct 24, 2025
a342caa
refactor: use Extensions client for subject resolution
tmeckel Oct 24, 2025
51e26d7
chore: fix indentation
tmeckel Oct 24, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion docs/azdo_graph_user_list.md
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ prefix-based filtering on user display names.

Output JSON with the specified fields. Prefix a field with '-' to exclude it.

* `-L`, `--limit` `int`
* `-L`, `--limit` `int` (default `20`)

Maximum number of users to return (pagination client-side)

Expand Down
22 changes: 20 additions & 2 deletions docs/azdo_help_reference.md
Original file line number Diff line number Diff line change
Expand Up @@ -655,13 +655,13 @@ p, perm, permissions

#### `azdo security permission list [TARGET] [flags]`

List security ACLs for a namespace, optionally filtered by subject.
List security ACEs for a namespace, optionally filtered by subject.

```
-q, --jq expression Filter JSON output using a jq expression
--json fields[=*] Output JSON with the specified fields. Prefix a field with '-' to exclude it.
-n, --namespace-id string ID of the security namespace to query (required).
--recurse Include child ACLs for the specified token when supported.
--recurse Include child ACEs for the specified token when supported.
-t, --template string Format JSON output using a Go template; see "azdo help formatting"
--token string Security token to filter the results.
```
Expand Down Expand Up @@ -715,6 +715,24 @@ Aliases
s
```

#### `azdo security permission show <TARGET> [flags]`

Show permissions for a user or group.

```
-q, --jq expression Filter JSON output using a jq expression
--json fields[=*] Output JSON with the specified fields. Prefix a field with '-' to exclude it.
-n, --namespace-id string ID of the security namespace to query (required).
-t, --template string Format JSON output using a Go template; see "azdo help formatting"
--token string Security token to query (required).
```

Aliases

```
s
```



### See also
Expand Down
2 changes: 1 addition & 1 deletion docs/azdo_pr_comment.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ If there are more than one pull request associated with the current branch, one

Comment to add to the pull request. Use &#39;-&#39; to read from stdin.

* `-t`, `--thread` `int`
* `-t`, `--thread` `int` (default `0`)

ID of the thread to reply to.

Expand Down
2 changes: 1 addition & 1 deletion docs/azdo_pr_diff.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ If there are more than one pull request associated with the current branch, one
### Options


* `--color` `string`
* `--color` `string` (default `&#34;auto&#34;`)

Use color in diff output: {always|never|auto}

Expand Down
4 changes: 2 additions & 2 deletions docs/azdo_pr_list.md
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ List pull requests in a Azure DevOps repository or project.

Filter by label

* `-L`, `--limit` `int`
* `-L`, `--limit` `int` (default `30`)

Maximum number of items to fetch

Expand All @@ -50,7 +50,7 @@ List pull requests in a Azure DevOps repository or project.

Filter by reviewer

* `-s`, `--state` `string`
* `-s`, `--state` `string` (default `&#34;active&#34;`)

Filter by state: {abandoned|active|all|completed}

Expand Down
4 changes: 2 additions & 2 deletions docs/azdo_pr_merge.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,15 +19,15 @@ If required checks have not yet passed, auto-complete will be enabled.

Delete the source branch after merging

* `--merge-strategy` `string`
* `--merge-strategy` `string` (default `&#34;NoFastForward&#34;`)

Merge strategy to use: {noFastForward|squash|rebase|rebaseMerge}

* `-m`, `--message` `string`

Message to include when completing the pull request

* `--transition-work-items`
* `--transition-work-items` (default `true`)

Transition linked work item statuses upon merging

Expand Down
4 changes: 2 additions & 2 deletions docs/azdo_pr_view.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,11 +13,11 @@ is displayed.
### Options


* `--comment-sort` `string`
* `--comment-sort` `string` (default `&#34;desc&#34;`)

Sort comments by creation time; defaults to &#39;desc&#39; (newest first): {desc|asc}

* `--comment-type` `string`
* `--comment-type` `string` (default `&#34;text&#34;`)

Filter comments by type; defaults to &#39;text&#39;: {text|system|all}

Expand Down
2 changes: 1 addition & 1 deletion docs/azdo_pr_vote.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ Without an argument, the pull request associated with the current branch is sele
### Options


* `--vote` `string`
* `--vote` `string` (default `&#34;approve&#34;`)

Vote value to set: {approve|approve-with-suggestions|reject|reset|wait-for-author}

Expand Down
8 changes: 4 additions & 4 deletions docs/azdo_project_create.md
Original file line number Diff line number Diff line change
Expand Up @@ -32,27 +32,27 @@ If the organization name is omitted from the project argument, the default confi

Output JSON with the specified fields. Prefix a field with &#39;-&#39; to exclude it.

* `--max-wait` `int`
* `--max-wait` `int` (default `3600`)

Maximum wait time in seconds

* `--no-wait`

Do not wait for the project to be created

* `-p`, `--process` `string`
* `-p`, `--process` `string` (default `&#34;Agile&#34;`)

Process to use (e.g., Scrum, Agile, CMMI)

* `-s`, `--source-control` `string`
* `-s`, `--source-control` `string` (default `&#34;git&#34;`)

Source control type (git or tfvc)

* `-t`, `--template` `string`

Format JSON output using a Go template; see &#34;azdo help formatting&#34;

* `--visibility` `string`
* `--visibility` `string` (default `&#34;private&#34;`)

Project visibility (private or public)

Expand Down
2 changes: 1 addition & 1 deletion docs/azdo_project_delete.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ azdo project delete [ORGANIZATION/]PROJECT [flags]

Output JSON with the specified fields. Prefix a field with &#39;-&#39; to exclude it.

* `--max-wait` `int`
* `--max-wait` `int` (default `3600`)

Maximum wait time in seconds

Expand Down
4 changes: 2 additions & 2 deletions docs/azdo_project_list.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,11 +9,11 @@ azdo project list [organization] [flags]
### Options


* `--format` `string`
* `--format` `string` (default `&#34;table&#34;`)

Output format: {json}

* `-l`, `--limit` `int`
* `-l`, `--limit` `int` (default `30`)

Maximum number of projects to fetch

Expand Down
2 changes: 1 addition & 1 deletion docs/azdo_repo_clone.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ or the value from the AZDO_ORGANIZATION environment variable.

Update all submodules after checkout

* `-u`, `--upstream-remote-name` `string`
* `-u`, `--upstream-remote-name` `string` (default `&#34;upstream&#34;`)

Upstream remote name when cloning a fork

Expand Down
4 changes: 2 additions & 2 deletions docs/azdo_repo_list.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,15 +9,15 @@ azdo repo list [organization/]<project> [flags]
### Options


* `--format` `string`
* `--format` `string` (default `&#34;table&#34;`)

Output format: {json}

* `--include-hidden`

Include hidden repositories

* `-L`, `--limit` `int`
* `-L`, `--limit` `int` (default `30`)

Maximum number of repositories to list

Expand Down
2 changes: 1 addition & 1 deletion docs/azdo_security_group_membership_list.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ azdo security group membership list [ORGANIZATION/]GROUP | [ORGANIZATION/]PROJEC

Output JSON with the specified fields. Prefix a field with &#39;-&#39; to exclude it.

* `-r`, `--relationship` `string`
* `-r`, `--relationship` `string` (default `&#34;members&#34;`)

Relationship type: members or memberof: {members|memberof}

Expand Down
1 change: 1 addition & 0 deletions docs/azdo_security_permission.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ Manage Azure DevOps security permissions.

* [azdo security permission list](./azdo_security_permission_list.md)
* [azdo security permission namespace](./azdo_security_permission_namespace.md)
* [azdo security permission show](./azdo_security_permission_show.md)

### ALIASES

Expand Down
14 changes: 7 additions & 7 deletions docs/azdo_security_permission_list.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,9 @@ List security access control entries (ACEs) for an Azure DevOps security namespa

Accepted TARGET formats:
- (empty) → use the default organization
- ORGANIZATION → list all ACLs for the namespace in the organization
- ORGANIZATION/SUBJECT → list ACLs for the specified subject
- ORGANIZATION/PROJECT/SUBJECT → list ACLs for the subject scoped to the project
- ORGANIZATION → list all ACEs for the namespace in the organization
- ORGANIZATION/SUBJECT → list ACEs for the specified subject
- ORGANIZATION/PROJECT/SUBJECT → list ACEs for the subject scoped to the project


### Options
Expand All @@ -30,7 +30,7 @@ Accepted TARGET formats:

* `--recurse`

Include child ACLs for the specified token when supported.
Include child ACEs for the specified token when supported.

* `-t`, `--template` `string`

Expand All @@ -53,16 +53,16 @@ Accepted TARGET formats:
### Examples

```bash
# List all ACLs for a namespace using the default organization
# List all ACEs for a namespace using the default organization
azdo security permission list --namespace-id 5a27515b-ccd7-42c9-84f1-54c998f03866

# List all ACLs for a namespace in an explicit organization
# List all ACEs for a namespace in an explicit organization
azdo security permission list fabrikam --namespace-id 5a27515b-ccd7-42c9-84f1-54c998f03866

# List all tokens for a specific user
azdo security permission list fabrikam/contoso@example.com --namespace-id 5a27515b-ccd7-42c9-84f1-54c998f03866

# List ACLs for a project-scoped group
# List ACEs for a project-scoped group
azdo security permission list fabrikam/ProjectAlpha/vssgp.Uy0xLTktMTIzNDU2 --namespace-id 5a27515b-ccd7-42c9-84f1-54c998f03866 --recurse
```

Expand Down
58 changes: 58 additions & 0 deletions docs/azdo_security_permission_show.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
## Command `azdo security permission show`

```
azdo security permission show <TARGET> [flags]
```

Show the explicit and effective permissions for a user or group on a specific securable resource (identified by a token).

Accepted TARGET formats:
- ORGANIZATION/SUBJECT → show permissions for the specified subject
- ORGANIZATION/PROJECT/SUBJECT → show permissions for the subject scoped to the project


### Options


* `-q`, `--jq` `expression`

Filter JSON output using a jq expression

* `--json` `fields`

Output JSON with the specified fields. Prefix a field with &#39;-&#39; to exclude it.

* `-n`, `--namespace-id` `string`

ID of the security namespace to query (required).

* `-t`, `--template` `string`

Format JSON output using a Go template; see &#34;azdo help formatting&#34;

* `--token` `string`

Security token to query (required).


### ALIASES

- `s`

### JSON Fields

`allow`, `deny`, `descriptor`, `effectiveAllow`, `effectiveDeny`, `inheritPermissions`, `inheritedAllow`, `inheritedDeny`, `token`

### Examples

```bash
# Show permissions for a user
azdo security permission show fabrikam/contoso@example.com --namespace-id 5a27515b-ccd7-42c9-84f1-54c998f03866 --token /projects/a6880f5a-60e1-4103-89f2-69533e4d139f

# Show permissions for a project-scoped group
azdo security permission show fabrikam/ProjectAlpha/vssgp.Uy0xLTktMTIzNDU2 --namespace-id 33344d9c-fc72-4d6f-aba5-fa317101a7e9 --token /
```

### See also

* [azdo security permission](./azdo_security_permission.md)
2 changes: 2 additions & 0 deletions internal/azdo/extensions/extension.go
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,8 @@ type Client interface {
// FindGroupsByDisplayName locates Azure DevOps security groups that match the provided display name,
// optionally scoped to a project descriptor, and returns their full details.
FindGroupsByDisplayName(ctx context.Context, displayName string, scopeDescriptor *string) ([]*graph.GraphGroup, error)
// ResolveMemberDescriptor resolves a member identifier (descriptor, email, or principal name) into a graph subject descriptor.
ResolveMemberDescriptor(ctx context.Context, member string) (*graph.GraphSubject, error)
}

type extensionClient struct {
Expand Down
Loading
Loading