Skip to content

Releases: saimeda32/grantry

v0.13.0

Choose a tag to compare

@saimeda32 saimeda32 released this 20 Jul 20:07

Added

  • grantry install --gated makes grantry the agent's only credential source. It writes project-scope files that blank the ambient AWS_* variables in the agent's own shell and set GRANTRY_CALLER=agent, and adds a short steering note telling the agent to fetch credentials via the get_credentials MCP tool. It does not ban the aws command — the agent still runs aws/boto3, just only with the short-lived, policy-checked credentials grantry issues. Written per client where supported (Claude Code settings.json, the VS Code forks' terminal.integrated.env); Copilot CLI and Claude Desktop get the steering note only. Idempotent and scoped to the current directory.

    This is defense-in-depth, not a guarantee: it cannot remove ~/.aws/credentials, the SSO cache, or an instance role, and does not control network egress. For a hard boundary, run the agent with no ambient AWS access at all. The command says so plainly.

v0.12.0

Choose a tag to compare

@saimeda32 saimeda32 released this 18 Jul 04:52

Changed

  • One identity spelling everywhere. An identity is now written account.role in grantry ls, policy patterns, the audit log, and the ~/.aws/config profile name grantry writes, so the exact same string works for both grantry run <id> and the native aws --profile <id>. Previously grantry showed account/role while the profile name used account.role, which forced you to remember two forms. The dot is the canonical separator; the older account/role slash form is still accepted as input and in policy patterns, so existing policies, scripts, and muscle memory keep working. grantry init now generates dot-form patterns.

Fixed

  • grantry populate and login write account.role profile names that match the identity you see in grantry ls, removing the earlier . vs / mismatch.

v0.11.1

Choose a tag to compare

@saimeda32 saimeda32 released this 17 Jul 23:55

Changed

  • credential-process no longer attempts an interactive login. It is machine-facing (the AWS SDK invokes it headless), so it must never open a browser. When credentials are needed mid-task, grantry refreshes the SSO token silently using the stored refresh token and mints fresh role credentials with no interaction, which is what keeps a running agent's access working. Only when the refresh token itself has expired does it fail, cleanly, asking you to run grantry login. The 0.11.0 auto-login (for a human at a terminal) still covers ls, run, switch, console, populate, graph, init, and admin.

v0.11.0

Choose a tag to compare

@saimeda32 saimeda32 released this 17 Jul 21:29

Changed

  • Shell-safe identity keys. Spaces in an account or role name now collapse to hyphens, so an account named "Acme Corp Account" shows and resolves as Acme-Corp-Account/AWSReadOnlyAccess with no quoting needed. Lookups still accept the raw spaced name, so pasting a name from the AWS console keeps working.
  • Auto-login. A command that needs a session but finds none now logs you in automatically instead of stopping with "Run 'grantry login' first" (ls, run, switch, console, populate, graph, init, admin, credential-process). Non-interactive contexts (no terminal) still report the missing session on stderr rather than opening a browser.

Fixed

  • Access graph "Export SVG" no longer produces an all-black image. The exported file carries its own colors and an opaque background, rendering the same as the on-screen graph in any viewer.

v0.10.6

Choose a tag to compare

@saimeda32 saimeda32 released this 17 Jul 17:26

After your first grantry login, grantry now suggests running grantry completion --install to turn on TAB completion (shown once). pip and pipx cannot set up completion at install time, so this is the nudge you were expecting after install.

v0.10.5

Choose a tag to compare

@saimeda32 saimeda32 released this 17 Jul 05:25
  • Docs: the README and project site now show a screenshot and an interactive navigation GIF of the org access graph; the terminal demo GIF now demonstrates TAB completion.
  • Fixed: no more BrokenPipeError traceback when output is piped to a reader that closes early (grantry ... | head, source <(grantry completion zsh)) — grantry exits quietly on SIGPIPE like a normal Unix tool.

v0.10.4

Choose a tag to compare

@saimeda32 saimeda32 released this 17 Jul 04:28

Simpler, less annoying access graph

  • The page scrolls normally again — removed the scroll-to-zoom that hijacked the wheel.
  • Removed the privilege/prod filter chips — they cluttered more than they helped. A static colour legend explains the levels; hover/click focus and search remain for exploration.
  • Missing enrichment is now visible — when the crawl role can't read group members, permission-set policies, or OUs, the panel and the crawl output say so (and name the missing permission, e.g. identitystore:ListGroupMemberships) instead of silently leaving it out.

v0.10.3

Choose a tag to compare

@saimeda32 saimeda32 released this 17 Jul 04:07

Misspelled commands now suggest the closest match at every level: grantry swich → "Did you mean 'switch'?", grantry admin assigments → "Did you mean 'assignments'?".

v0.10.2

Choose a tag to compare

@saimeda32 saimeda32 released this 17 Jul 03:50

Running grantry completion at a prompt now prints how to turn completion on (grantry completion --install) instead of dumping a wall of shell script. It still emits the raw script when sourced or piped, so source <(grantry completion zsh) keeps working.

v0.10.1

Choose a tag to compare

@saimeda32 saimeda32 released this 17 Jul 03:47
  • grantry completion --install sets up shell completion in one command (pipx/pip can't do it for you): it detects your shell and adds the source line to your rc file.
  • Fixed: completion now completes identities after --as, --identity, and --profile (so admin assignments --as <TAB> works), not only the positional run/switch/console.
  • Docs clarify that TAB completion is prefix-based; for "type a few letters anywhere" filtering, omit the identity and use the picker.