Repository: nats-io/nsc
Pull request #688 (2025-01-02 16:19:28)

Fix 687


Patch:
diff --git a/.github/workflows/pushes.yaml b/.github/workflows/pushes.yaml
index 1057a43..a92ba5d 100644
--- a/.github/workflows/pushes.yaml
+++ b/.github/workflows/pushes.yaml
@@ -60,26 +60,10 @@ jobs:
           go-version: ${{ matrix.go }}
           # We're not doing releases, just checks, so we can live without check-latest here
 
-      - name: Export Go environment to Actions outputs
-        id: go-settings
-        run: |
-          echo "::set-output name=arch::$(go env GOARCH)"
-          echo "::set-output name=hostarch::$(go env GOHOSTARCH)"
-          echo "::set-output name=os::$(go env GOOS)"
-          echo "::set-output name=hostos::$(go env GOHOSTOS)"
-          echo "::set-output name=go-version::$(go env GOVERSION)"
-        # Use with:
-        #   ${{ steps.go-settings.outputs.go-version }}
-        # which will look like `go1.17.1` if matrix `1.17.x` matches `1.17.1`.
-        # These are independent of how the matrix is setup, or if a matrix is even used.
-        #
-        # You can see the individual values in the "Set up Go" output, collapsed inside a "go env" group at the end.
 
       - name: Install additional check/lint tools
         id: tools-install
         run: |
-          go install github.com/mattn/goveralls@latest
-          go install github.com/wadey/gocovmerge@latest
           go install honnef.co/go/tools/cmd/staticcheck@2021.1.2
         if: matrix.canonical
 
@@ -92,38 +76,22 @@ jobs:
       - name: Run Tests (with coverage enabled)
         id: coverage
         run: |
-          mkdir cov
-          echo "::group::Coverage of ./cmd"
-          go test -v -failfast -covermode=atomic -coverprofile=./cov/cmd.out ./cmd
-          echo "::endgroup::"
-          echo "::group::Coverage of ./cmd/store"
-          go test -v -failfast -covermode=atomic -coverprofile=./cov/store.out ./cmd/store
-          echo "::endgroup::"
+          go test -v -failfast -coverpkg=./... -coverprofile=./coverage.out ./...
         if: runner.os != 'Windows'
 
-      - name: Run Tests (Windows)
-        id: wintest
-        # nb2: if we use the coverage approach on Windows, the -coverprofile flag appears to be looked for as a package, and I've no idea why (am not a Windows dev)
-        #   cannot find package "github.com/nats-io/nsc/cov/cmd.out" in any of:
-        #	C:\hostedtoolcache\windows\go\1.16.13\x64\src\github.com\nats-io\nsc\cov\cmd.out (from $GOROOT)
-        #	D:\a\nsc\nsc\go\src\github.com\nats-io\nsc\cov\cmd.out (from $GOPATH)
+      - name: Run Tests (windows)
         run: |
-          echo "::group::Testing of ./cmd"
-          go test -v -failfast ./cmd
-          echo "::endgroup::"
-          echo "::group::Testing of ./cmd/store"
-          go test -v -failfast ./cmd/store
-          echo "::endgroup::"
+          go test -v -failfast ./...
         if: runner.os == 'Windows'
 
-      - name: Upload coverage results
-        id: coverage-upload
-        run: |
-          gocovmerge ./cov/*.out > coverage.out
-          goveralls -coverprofile=coverage.out -service=github
-        env:
-          COVERALLS_TOKEN: ${{ secrets.GITHUB_TOKEN }}
-        if: matrix.canonical
+      - name: Upload coverage
+        uses: coverallsapp/github-action@v2
+        continue-on-error: true
+        with:
+          github-token: ${{ secrets.GITHUB_TOKEN }}
+          flag-name: ${{ matrix.module }}
+          file: ./coverage.out
+        if: runner.os != 'Windows'
 
       - name: Bad versions creep defense
         id: go-module-versions
diff --git a/.goreleaser.yml b/.goreleaser.yml
index 0a15477..1c1ae9f 100644
--- a/.goreleaser.yml
+++ b/.goreleaser.yml
@@ -76,6 +76,17 @@ checksum:
 snapshot:
   version_template: 'dev'
 
+# this package is not used by the self-updater, so we can tag the version
+nfpms:
+  - file_name_template: '{{ .ProjectName }}-v{{ .Version }}-{{ .Arch }}{{ if .Arm
+    }}v{{ .Arm }}{{ end }}'
+    maintainer: nats.io
+    description: nsc cli program
+    vendor: nats-io
+    bindir: /usr/local/bin
+    formats:
+      - deb
+
 signs:
   - id: cosign
     cmd: "./release/sign-cosign"
@@ -110,4 +121,4 @@ brews:
       system "#{bin}/nsc --version"
     install: |
       bin.install "nsc"
-
+      generate_completions_from_executable(bin/"nsc", "completion")
diff --git a/Makefile b/Makefile
index 31771ff..87fbfa7 100644
--- a/Makefile
+++ b/Makefile
@@ -20,7 +20,7 @@ fmt:
 	go mod tidy
 
 compile:
-	goreleaser --snapshot --rm-dist --skip-validate --skip-publish --parallelism 12
+	goreleaser --snapshot --clean --skip=publish,validate --parallelism 12
 
 install: compile build
 	cp $(BUILD_DIR)/nsc_$(BUILD_OS)_$(BUILD_OS_ARCH)/* $(BUILD_OS_GOPATH)/bin
@@ -28,13 +28,17 @@ install: compile build
 cover: test
 	go tool cover -html=./coverage.out
 
+doc:
+	go run ./ test doc docs
+
 # The NSC_*_OPERATOR unset is because those variables pre-define operators which break the interactive tests
 test:
 	go mod vendor
 	go vet ./...
 	rm -rf ./coverage.out
 	staticcheck -f text ./...
-	unset $$(env | sed -nEe 's/^(NSC_[^=]*_OPERATOR)=.*/\1/p'); go test -coverpkg=./... -coverprofile=./coverage.out ./...
+	#unset $$(env | sed -nEe 's/^(NSC_[^=]*_OPERATOR)=.*/\1/p'); go test -coverpkg=./... -coverprofile=./coverage.out ./...
+	unset $$(env | sed -nEe 's/^(NSC_[^=]*_OPERATOR)=.*/\1/p'); go test -coverpkg=$(go list ./...) -covermode=atomic -coverprofile=./coverage.out ./...
 	staticcheck ./...
 
 release: fmt test compile
diff --git a/cmd/generatediagram.go b/cmd/generatediagram.go
index 0be20cc..d7ce746 100644
--- a/cmd/generatediagram.go
+++ b/cmd/generatediagram.go
@@ -27,17 +27,22 @@ import (
 	"github.com/spf13/cobra"
 )
 
+var accDetail bool
 var outputFile string
+var users, showKeys, detail bool
 
-func init() {
+func createDiagramCmd() *cobra.Command {
 	diagram := &cobra.Command{
 		Use:          "diagram",
 		Short:        "Generate diagrams for this store",
 		Args:         MaxArgs(0),
 		SilenceUsage: true,
 	}
-	accDetail := false
-	comp := &cobra.Command{
+	return diagram
+}
+
+func createComponentDiagreamCmd() *cobra.Command {
+	cmd := &cobra.Command{
 		Use:          "component",
 		Short:        "Generate a plantuml component diagram for this store",
 		Args:         MaxArgs(0),
@@ -47,10 +52,14 @@ func init() {
 			return componentDiagram(accDetail)
 		},
 	}
-	comp.Flags().BoolVarP(&accDetail, "detail", "", false, "Include account descriptions")
-	diagram.AddCommand(comp)
-	showKeys, detail, users := false, false, false
-	object := &cobra.Command{
+	cmd.Flags().BoolVarP(&accDetail, "detail", "", false, "Include account descriptions")
+	cmd.Flags().StringVarP(&outputFile, "output-file", "o", "--", "output file, '--' is stdout")
+
+	return cmd
+}
+
+func createObjectDiagramCmd() *cobra.Command {
+	cmd := &cobra.Command{
 		Use:          "object",
 		Short:        "Generate a plantuml object diagram for this store",
 		Args:         MaxArgs(0),
@@ -60,12 +69,20 @@ func init() {
 			return objectDiagram(users, showKeys, detail)
 		},
 	}
-	object.Flags().BoolVarP(&showKeys, "show-keys", "", false, "Include keys in diagram")
-	object.Flags().BoolVarP(&users, "users", "", false, "Include User")
-	object.Flags().BoolVarP(&detail, "detail", "", false, "Include empty/unlimited values")
-	diagram.AddCommand(object)
-	diagram.PersistentFlags().StringVarP(&outputFile, "output-file", "o", "--", "output file, '--' is stdout")
+
+	cmd.Flags().BoolVarP(&showKeys, "show-keys", "", false, "Include keys in diagram")
+	cmd.Flags().BoolVarP(&users, "users", "", false, "Include User")
+	cmd.Flags().BoolVarP(&detail, "detail", "", false, "Include empty/unlimited values")
+	cmd.Flags().StringVarP(&outputFile, "output-file", "o", "--", "output file, '--' is stdout")
+
+	return cmd
+}
+
+func init() {
+	diagram := createDiagramCmd()
 	generateCmd.AddCommand(diagram)
+	diagram.AddCommand(createComponentDiagreamCmd())
+	diagram.AddCommand(createObjectDiagramCmd())
 }
 
 const rename = "<&resize-width>"
diff --git a/cmd/usercontextparams.go b/cmd/usercontextparams.go
index 12ea261..52a3e8e 100644
--- a/cmd/usercontextparams.go
+++ b/cmd/usercontextparams.go
@@ -57,9 +57,13 @@ func (p *UserContextParams) SetDefaults(ctx ActionCtx) error {
 }
 
 func (p *UserContextParams) Edit(ctx ActionCtx) error {
-	config := GetConfig()
+	account := ctx.StoreCtx().Account.Name
+	if account == "" {
+		config := GetConfig()
+		account = config.Account
+	}
 	var err error
-	p.Name, err = PickUser(ctx.StoreCtx(), config.Account)
+	p.Name, err = PickUser(ctx.StoreCtx(), account)
 	if err != nil {
 		return err
 	}
diff --git a/docs/nsc.md b/docs/nsc.md
index 4047552..06fc887 100644
--- a/docs/nsc.md
+++ b/docs/nsc.md
@@ -2,13 +2,14 @@
 
 nsc creates NATS operators, accounts, users, and manage their permissions.
 
-### Synopsis
-
-nsc creates NATS operators, accounts, users, and manage their permissions.
+```
+nsc [flags]
+```
 
 ### Options
 
 ```
+  -H, --all-dirs string       sets --config-dir, --data-dir, and --keystore-dir to the same value
       --config-dir string     nsc config directory
       --data-dir string       nsc data store directory
   -h, --help                  help for nsc
@@ -17,27 +18,32 @@ nsc creates NATS operators, accounts, users, and manage their permissions.
   -K, --private-key string    Key used to sign. Can be specified as role (where applicable),
                               public key (private portion is retrieved)
                               or file path to a private key or private key 
+  -v, --version               version for nsc
 ```
 
 ### SEE ALSO
 
 * [nsc add](nsc_add.md)	 - Add assets such as accounts, imports, users
+* [nsc completion](nsc_completion.md)	 - Generate the autocompletion script for the specified shell
 * [nsc delete](nsc_delete.md)	 - Delete imports and exports
 * [nsc describe](nsc_describe.md)	 - Describe assets such as operators, accounts, users, and jwt files
 * [nsc edit](nsc_edit.md)	 - Edit assets such as accounts, imports, and users
 * [nsc env](nsc_env.md)	 - Prints and manage the nsc environment
+* [nsc expirations](nsc_expirations.md)	 - Create a new expiration report
 * [nsc export](nsc_export.md)	 - Export assets such as nkeys
 * [nsc generate](nsc_generate.md)	 - Generate activations, creds, configs or nkeys
 * [nsc import](nsc_import.md)	 - Import assets such as nkeys
 * [nsc init](nsc_init.md)	 - Initialize an environment by creating an operator, account and user
 * [nsc keys](nsc_keys.md)	 - Manage keys for operators, accounts, and users
 * [nsc list](nsc_list.md)	 - List assets such as accounts, imports, users
+* [nsc load](nsc_load.md)	 - install entities for an operator, account and key
 * [nsc pull](nsc_pull.md)	 - Pull an operator or account jwt replacing the local jwt with the server's version
 * [nsc push](nsc_push.md)	 - Push an account jwt to an Account JWT Server
 * [nsc reissue](nsc_reissue.md)	 - Re-issue objects with a new identity key
 * [nsc revocations](nsc_revocations.md)	 - Manage revocation for users and activations from an account
+* [nsc select](nsc_select.md)	 - Set the current operator or account
 * [nsc tool](nsc_tool.md)	 - NATS tools: pub, sub, req, rep, rtt
 * [nsc update](nsc_update.md)	 - Update this tool to latest version
 * [nsc validate](nsc_validate.md)	 - Validate an operator, account(s), and users
 
-###### Auto generated by spf13/cobra on 25-Feb-2022
+###### Auto generated by spf13/cobra on 2-Jan-2025
diff --git a/docs/nsc_add.md b/docs/nsc_add.md
index d335600..7884a14 100644
--- a/docs/nsc_add.md
+++ b/docs/nsc_add.md
@@ -2,10 +2,6 @@
 
 Add assets such as accounts, imports, users
 
-### Synopsis
-
-Add assets such as accounts, imports, users
-
 ### Options
 
 ```
@@ -15,6 +11,7 @@ Add assets such as accounts, imports, users
 ### Options inherited from parent commands
 
 ```
+  -H, --all-dirs string       sets --config-dir, --data-dir, and --keystore-dir to the same value
       --config-dir string     nsc config directory
       --data-dir string       nsc data store directory
   -i, --interactive           ask questions for various settings
@@ -34,4 +31,4 @@ Add assets such as accounts, imports, users
 * [nsc add operator](nsc_add_operator.md)	 - Add an operator
 * [nsc add user](nsc_add_user.md)	 - Add an user to the account
 
-###### Auto generated by spf13/cobra on 25-Feb-2022
+###### Auto generated by spf13/cobra on 2-Jan-2025
diff --git a/docs/nsc_add_account.md b/docs/nsc_add_account.md
index b94a3bd..fd6a964 100644
--- a/docs/nsc_add_account.md
+++ b/docs/nsc_add_account.md
@@ -2,10 +2,6 @@
 
 Add an account
 
-### Synopsis
-
-Add an account
-
 ```
 nsc add account [flags]
 ```
@@ -20,17 +16,18 @@ nsc add account [flags]
       --deny-pub strings             add deny publish default permissions - comma separated list or option can be specified multiple times
       --deny-pubsub strings          add deny publish and subscribe default permissions - comma separated list or option can be specified multiple times
       --deny-sub strings             add deny subscribe default permissions - comma separated list or option can be specified multiple times
-      --expiry string                valid until ('0' is always, '2M' is two months) - yyyy-mm-dd, #m(inutes), #h(ours), #d(ays), #w(eeks), #M(onths), #y(ears) (default "0")
+      --expiry string                valid until ('0' is always, '2M' is two months) - yyyy-mm-dd, #m(inutes), #h(ours), #d(ays), #w(eeks), #M(onths), #y(ears)
   -h, --help                         help for account
   -n, --name string                  account name
   -k, --public-key string            public key identifying the account
       --response-ttl string          the amount of time the default permissions is valid (global) - [#ms(millis) | #s(econds) | m(inutes) | h(ours)] - Default is no time limit.
-      --start string                 valid from ('0' is always, '3d' is three days) - yyyy-mm-dd, #m(inutes), #h(ours), #d(ays), #w(eeks), #M(onths), #y(ears) (default "0")
+      --start string                 valid from ('0' is always, '3d' is three days) - yyyy-mm-dd, #m(inutes), #h(ours), #d(ays), #w(eeks), #M(onths), #y(ears)
 ```
 
 ### Options inherited from parent commands
 
 ```
+  -H, --all-dirs string       sets --config-dir, --data-dir, and --keystore-dir to the same value
       --config-dir string     nsc config directory
       --data-dir string       nsc data store directory
   -i, --interactive           ask questions for various settings
@@ -44,4 +41,4 @@ nsc add account [flags]
 
 * [nsc add](nsc_add.md)	 - Add assets such as accounts, imports, users
 
-###### Auto generated by spf13/cobra on 25-Feb-2022
+###### Auto generated by spf13/cobra on 2-Jan-2025
diff --git a/docs/nsc_add_export.md b/docs/nsc_add_export.md
index a3c1e03..d0e5181 100644
--- a/docs/nsc_add_export.md
+++ b/docs/nsc_add_export.md
@@ -2,10 +2,6 @@
 
 Add an export
 
-### Synopsis
-
-Add an export
-
 ```
 nsc add export [flags]
 ```
@@ -24,6 +20,7 @@ nsc add export --name myexport --subject a.b --service
 ```
   -a, --account string                account name
       --account-token-position uint   subject token position where account is expected (public exports only)
+      --allow-trace                   allow trace requests
   -h, --help                          help for export
       --latency string                latency metrics subject (services only)
   -n, --name string                   export name
@@ -38,6 +35,7 @@ nsc add export --name myexport --subject a.b --service
 ### Options inherited from parent commands
 
 ```
+  -H, --all-dirs string       sets --config-dir, --data-dir, and --keystore-dir to the same value
       --config-dir string     nsc config directory
       --data-dir string       nsc data store directory
   -i, --interactive           ask questions for various settings
@@ -51,4 +49,4 @@ nsc add export --name myexport --subject a.b --service
 
 * [nsc add](nsc_add.md)	 - Add assets such as accounts, imports, users
 
-###### Auto generated by spf13/cobra on 25-Feb-2022
+###### Auto generated by spf13/cobra on 2-Jan-2025
diff --git a/docs/nsc_add_import.md b/docs/nsc_add_import.md
index 8fbaa40..7f72b94 100644
--- a/docs/nsc_add_import.md
+++ b/docs/nsc_add_import.md
@@ -2,10 +2,6 @@
 
 Add an import
 
-### Synopsis
-
-Add an import
-
 ```
 nsc add import [flags]
 ```
@@ -23,6 +19,7 @@ nsc add import --src-account <account_pubkey> --remote-subject <remote-sub> --lo
 
 ```
   -a, --account string          account name
+      --allow-trace             allow trace requests
   -h, --help                    help for import
   -s, --local-subject string    local subject
   -n, --name string             import name
@@ -36,6 +33,7 @@ nsc add import --src-account <account_pubkey> --remote-subject <remote-sub> --lo
 ### Options inherited from parent commands
 
 ```
+  -H, --all-dirs string       sets --config-dir, --data-dir, and --keystore-dir to the same value
       --config-dir string     nsc config directory
       --data-dir string       nsc data store directory
   -i, --interactive           ask questions for various settings
@@ -49,4 +47,4 @@ nsc add import --src-account <account_pubkey> --remote-subject <remote-sub> --lo
 
 * [nsc add](nsc_add.md)	 - Add assets such as accounts, imports, users
 
-###### Auto generated by spf13/cobra on 25-Feb-2022
+###### Auto generated by spf13/cobra on 2-Jan-2025
diff --git a/docs/nsc_add_mapping.md b/docs/nsc_add_mapping.md
index 69cd58c..71b3cf6 100644
--- a/docs/nsc_add_mapping.md
+++ b/docs/nsc_add_mapping.md
@@ -2,10 +2,6 @@
 
 Add (or modify) a mapping entry
 
-### Synopsis
-
-Add (or modify) a mapping entry
-
 ```
 nsc add mapping [flags]
 ```
@@ -35,6 +31,7 @@ nsc add mapping --from "a" --to "c" --weight 50
 ### Options inherited from parent commands
 
 ```
+  -H, --all-dirs string       sets --config-dir, --data-dir, and --keystore-dir to the same value
       --config-dir string     nsc config directory
       --data-dir string       nsc data store directory
   -i, --interactive           ask questions for various settings
@@ -48,4 +45,4 @@ nsc add mapping --from "a" --to "c" --weight 50
 
 * [nsc add](nsc_add.md)	 - Add assets such as accounts, imports, users
 
-###### Auto generated by spf13/cobra on 25-Feb-2022
+###### Auto generated by spf13/cobra on 2-Jan-2025
diff --git a/docs/nsc_add_operator.md b/docs/nsc_add_operator.md
index a7acbe0..3b42ff4 100644
--- a/docs/nsc_add_operator.md
+++ b/docs/nsc_add_operator.md
@@ -2,10 +2,6 @@
 
 Add an operator
 
-### Synopsis
-
-Add an operator
-
 ```
 nsc add operator [flags]
 ```
@@ -13,12 +9,12 @@ nsc add operator [flags]
 ### Options
 
 ```
-      --expiry string          valid until ('0' is always, '2M' is two months) - yyyy-mm-dd, #m(inutes), #h(ours), #d(ays), #w(eeks), #M(onths), #y(ears) (default "0")
+      --expiry string          valid until ('0' is always, '2M' is two months) - yyyy-mm-dd, #m(inutes), #h(ours), #d(ays), #w(eeks), #M(onths), #y(ears)
       --force                  on import, overwrite existing when already present
       --generate-signing-key   generate a signing key with the operator
   -h, --help                   help for operator
   -n, --name string            operator name
-      --start string           valid from ('0' is always, '3d' is three days) - yyyy-mm-dd, #m(inutes), #h(ours), #d(ays), #w(eeks), #M(onths), #y(ears) (default "0")
+      --start string           valid from ('0' is always, '3d' is three days) - yyyy-mm-dd, #m(inutes), #h(ours), #d(ays), #w(eeks), #M(onths), #y(ears)
   -s, --sys                    generate system account with the operator (if specified will be signed with signing key)
   -u, --url string             import from a jwt server url, file, or well known operator
 ```
@@ -26,6 +22,7 @@ nsc add operator [flags]
 ### Options inherited from parent commands
 
 ```
+  -H, --all-dirs string       sets --config-dir, --data-dir, and --keystore-dir to the same value
       --config-dir string     nsc config directory
       --data-dir string       nsc data store directory
   -i, --interactive           ask questions for various settings
@@ -39,4 +36,4 @@ nsc add operator [flags]
 
 * [nsc add](nsc_add.md)	 - Add assets such as accounts, imports, users
 
-###### Auto generated by spf13/cobra on 25-Feb-2022
+###### Auto generated by spf13/cobra on 2-Jan-2025
diff --git a/docs/nsc_add_user.md b/docs/nsc_add_user.md
index 940cc32..5755c2f 100644
--- a/docs/nsc_add_user.md
+++ b/docs/nsc_add_user.md
@@ -2,10 +2,6 @@
 
 Add an user to the account
 
-### Synopsis
-
-Add an user to the account
-
 ```
 nsc add user [flags]
 ```
@@ -58,19 +54,20 @@ nsc add user --name <n> --allow-pub-response=5
       --deny-pub strings             add deny publish permissions - comma separated list or option can be specified multiple times
       --deny-pubsub strings          add deny publish and subscribe permissions - comma separated list or option can be specified multiple times
       --deny-sub strings             add deny subscribe permissions - comma separated list or option can be specified multiple times
-      --expiry string                valid until ('0' is always, '2M' is two months) - yyyy-mm-dd, #m(inutes), #h(ours), #d(ays), #w(eeks), #M(onths), #y(ears) (default "0")
+      --expiry string                valid until ('0' is always, '2M' is two months) - yyyy-mm-dd, #m(inutes), #h(ours), #d(ays), #w(eeks), #M(onths), #y(ears)
   -h, --help                         help for user
   -n, --name string                  name to assign the user
   -k, --public-key string            public key identifying the user
       --response-ttl string          the amount of time the permissions is valid (global) - [#ms(millis) | #s(econds) | m(inutes) | h(ours)] - Default is no time limit.
       --source-network strings       source network for connection - comma separated list or option can be specified multiple times
-      --start string                 valid from ('0' is always, '3d' is three days) - yyyy-mm-dd, #m(inutes), #h(ours), #d(ays), #w(eeks), #M(onths), #y(ears) (default "0")
+      --start string                 valid from ('0' is always, '3d' is three days) - yyyy-mm-dd, #m(inutes), #h(ours), #d(ays), #w(eeks), #M(onths), #y(ears)
       --tag strings                  tags for user - comma separated list or option can be specified multiple times
 ```
 
 ### Options inherited from parent commands
 
 ```
+  -H, --all-dirs string       sets --config-dir, --data-dir, and --keystore-dir to the same value
       --config-dir string     nsc config directory
       --data-dir string       nsc data store directory
   -i, --interactive           ask questions for various settings
@@ -84,4 +81,4 @@ nsc add user --name <n> --allow-pub-response=5
 
 * [nsc add](nsc_add.md)	 - Add assets such as accounts, imports, users
 
-###### Auto generated by spf13/cobra on 25-Feb-2022
+###### Auto generated by spf13/cobra on 2-Jan-2025
diff --git a/docs/nsc_completion.md b/docs/nsc_completion.md
new file mode 100644
index 0000000..451619b
--- /dev/null
+++ b/docs/nsc_completion.md
@@ -0,0 +1,38 @@
+## nsc completion
+
+Generate the autocompletion script for the specified shell
+
+### Synopsis
+
+Generate the autocompletion script for nsc for the specified shell.
+See each sub-command's help for details on how to use the generated script.
+
+
+### Options
+
+```
+  -h, --help   help for completion
+```
+
+### Options inherited from parent commands
+
+```
+  -H, --all-dirs string       sets --config-dir, --data-dir, and --keystore-dir to the same value
+      --config-dir string     nsc config directory
+      --data-dir string       nsc data store directory
+  -i, --interactive           ask questions for various settings
+      --keystore-dir string   nsc keystore directory
+  -K, --private-key string    Key used to sign. Can be specified as role (where applicable),
+                              public key (private portion is retrieved)
+                              or file path to a private key or private key 
+```
+
+### SEE ALSO
+
+* [nsc](nsc.md)	 - nsc creates NATS operators, accounts, users, and manage their permissions.
+* [nsc completion bash](nsc_completion_bash.md)	 - Generate the autocompletion script for bash
+* [nsc completion fish](nsc_completion_fish.md)	 - Generate the autocompletion script for fish
+* [nsc completion powershell](nsc_completion_powershell.md)	 - Generate the autocompletion script for powershell
+* [nsc completion zsh](nsc_completion_zsh.md)	 - Generate the autocompletion script for zsh
+
+###### Auto generated by spf13/cobra on 2-Jan-2025
diff --git a/docs/nsc_completion_bash.md b/docs/nsc_completion_bash.md
new file mode 100644
index 0000000..1f4958f
--- /dev/null
+++ b/docs/nsc_completion_bash.md
@@ -0,0 +1,57 @@
+## nsc completion bash
+
+Generate the autocompletion script for bash
+
+### Synopsis
+
+Generate the autocompletion script for the bash shell.
+
+This script depends on the 'bash-completion' package.
+If it is not installed already, you can install it via your OS's package manager.
+
+To load completions in your current shell session:
+
+	source <(nsc completion bash)
+
+To load completions for every new session, execute once:
+
+#### Linux:
+
+	nsc completion bash > /etc/bash_completion.d/nsc
+
+#### macOS:
+
+	nsc completion bash > $(brew --prefix)/etc/bash_completion.d/nsc
+
+You will need to start a new shell for this setup to take effect.
+
+
+```
+nsc completion bash
+```
+
+### Options
+
+```
+  -h, --help              help for bash
+      --no-descriptions   disable completion descriptions
+```
+
+### Options inherited from parent commands
+
+```
+  -H, --all-dirs string       sets --config-dir, --data-dir, and --keystore-dir to the same value
+      --config-dir string     nsc config directory
+      --data-dir string       nsc data store directory
+  -i, --interactive           ask questions for various settings
+      --keystore-dir string   nsc keystore directory
+  -K, --private-key string    Key used to sign. Can be specified as role (where applicable),
+                              public key (private portion is retrieved)
+                              or file path to a private key or private key 
+```
+
+### SEE ALSO
+
+* [nsc completion](nsc_completion.md)	 - Generate the autocompletion script for the specified shell
+
+###### Auto generated by spf13/cobra on 2-Jan-2025
diff --git a/docs/nsc_completion_fish.md b/docs/nsc_completion_fish.md
new file mode 100644
index 0000000..3116e42
--- /dev/null
+++ b/docs/nsc_completion_fish.md
@@ -0,0 +1,48 @@
+## nsc completion fish
+
+Generate the autocompletion script for fish
+
+### Synopsis
+
+Generate the autocompletion script for the fish shell.
+
+To load completions in your current shell session:
+
+	nsc completion fish | source
+
+To load completions for every new session, execute once:
+
+	nsc completion fish > ~/.config/fish/completions/nsc.fish
+
+You will need to start a new shell for this setup to take effect.
+
+
+```
+nsc completion fish [flags]
+```
+
+### Options
+
+```
+  -h, --help              help for fish
+      --no-descriptions   disable completion descriptions
+```
+
+### Options inherited from parent commands
+
+```
+  -H, --all-dirs string       sets --config-dir, --data-dir, and --keystore-dir to the same value
+      --config-dir string     nsc config directory
+      --data-dir string       nsc data store directory
+  -i, --interactive           ask questions for various settings
+      --keystore-dir string   nsc keystore directory
+  -K, --private-key string    Key used to sign. Can be specified as role (where applicable),
+                              public key (private portion is retrieved)
+                              or file path to a private key or private key 
+```
+
+### SEE ALSO
+
+* [nsc completion](nsc_completion.md)	 - Generate the autocompletion script for the specified shell
+
+###### Auto generated by spf13/cobra on 2-Jan-2025
diff --git a/docs/nsc_completion_powershell.md b/docs/nsc_completion_powershell.md
new file mode 100644
index 0000000..e90dd59
--- /dev/null
+++ b/docs/nsc_completion_powershell.md
@@ -0,0 +1,45 @@
+## nsc completion powershell
+
+Generate the autocompletion script for powershell
+
+### Synopsis
+
+Generate the autocompletion script for powershell.
+
+To load completions in your current shell session:
+
+	nsc completion powershell | Out-String | Invoke-Expression
+
+To load completions for every new session, add the output of the above command
+to your powershell profile.
+
+
+```
+nsc completion powershell [flags]
+```
+
+### Options
+
+```
+  -h, --help              help for powershell
+      --no-descriptions   disable completion descriptions
+```
+
+### Options inherited from parent commands
+
+```
+  -H, --all-dirs string       sets --config-dir, --data-dir, and --keystore-dir to the same value
+      --config-dir string     nsc config directory
+      --data-dir string       nsc data store directory
+  -i, --interactive           ask questions for various settings
+      --keystore-dir string   nsc keystore directory
+  -K, --private-key string    Key used to sign. Can be specified as role (where applicable),
+                              public key (private portion is retrieved)
+                              or file path to a private key or private key 
+```
+
+### SEE ALSO
+
+* [nsc completion](nsc_completion.md)	 - Generate the autocompletion script for the specified shell
+
+###### Auto generated by spf13/cobra on 2-Jan-2025
diff --git a/docs/nsc_completion_zsh.md b/docs/nsc_completion_zsh.md
new file mode 100644
index 0000000..6f10744
--- /dev/null
+++ b/docs/nsc_completion_zsh.md
@@ -0,0 +1,59 @@
+## nsc completion zsh
+
+Generate the autocompletion script for zsh
+
+### Synopsis
+
+Generate the autocompletion script for the zsh shell.
+
+If shell completion is not already enabled in your environment you will need
+to enable it.  You can execute the following once:
+
+	echo "autoload -U compinit; compinit" >> ~/.zshrc
+
+To load completions in your current shell session:
+
+	source <(nsc completion zsh)
+
+To load completions for every new session, execute once:
+
+#### Linux:
+
+	nsc completion zsh > "${fpath[1]}/_nsc"
+
+#### macOS:
+
+	nsc completion zsh > $(brew --prefix)/share/zsh/site-functions/_nsc
+
+You will need to start a new shell for this setup to take effect.
+
+
+```
+nsc completion zsh [flags]
+```
+
+### Options
+
+```
+  -h, --help              help for zsh
+      --no-descriptions   disable completion descriptions
+```
+
+### Options inherited from parent commands
+
+```
+  -H, --all-dirs string       sets --config-dir, --data-dir, and --keystore-dir to the same value
+      --config-dir string     nsc config directory
+      --data-dir string       nsc data store directory
+  -i, --interactive           ask questions for various settings
+      --keystore-dir string   nsc keystore directory
+  -K, --private-key string    Key used to sign. Can be specified as role (where applicable),
+                              public key (private portion is retrieved)
+                              or file path to a private key or private key 
+```
+
+### SEE ALSO
+
+* [nsc completion](nsc_completion.md)	 - Generate the autocompletion script for the specified shell
+
+###### Auto generated by spf13/cobra on 2-Jan-2025
diff --git a/docs/nsc_delete.md b/docs/nsc_delete.md
index 52d7126..341f66d 100644
--- a/docs/nsc_delete.md
+++ b/docs/nsc_delete.md
@@ -2,10 +2,6 @@
 
 Delete imports and exports
 
-### Synopsis
-
-Delete imports and exports
-
 ### Options
 
 ```
@@ -15,6 +11,7 @@ Delete imports and exports
 ### Options inherited from parent commands
 
 ```
+  -H, --all-dirs string       sets --config-dir, --data-dir, and --keystore-dir to the same value
       --config-dir string     nsc config directory
       --data-dir string       nsc data store directory
   -i, --interactive           ask questions for various settings
@@ -33,4 +30,4 @@ Delete imports and exports
 * [nsc delete mapping](nsc_delete_mapping.md)	 - Delete a mapping
 * [nsc delete user](nsc_delete_user.md)	 - Delete an user
 
-###### Auto generated by spf13/cobra on 25-Feb-2022
+###### Auto generated by spf13/cobra on 2-Jan-2025
diff --git a/docs/nsc_delete_account.md b/docs/nsc_delete_account.md
index b40b4af..a4b1037 100644
--- a/docs/nsc_delete_account.md
+++ b/docs/nsc_delete_account.md
@@ -2,10 +2,6 @@
 
 Delete an account and associated users
 
-### Synopsis
-
-Delete an account and associated users
-
 ```
 nsc delete account [flags]
 ```
@@ -32,6 +28,7 @@ nsc delete account -i
 ### Options inherited from parent commands
 
 ```
+  -H, --all-dirs string       sets --config-dir, --data-dir, and --keystore-dir to the same value
       --config-dir string     nsc config directory
       --data-dir string       nsc data store directory
   -i, --interactive           ask questions for various settings
@@ -45,4 +42,4 @@ nsc delete account -i
 
 * [nsc delete](nsc_delete.md)	 - Delete imports and exports
 
-###### Auto generated by spf13/cobra on 25-Feb-2022
+###### Auto generated by spf13/cobra on 2-Jan-2025
diff --git a/docs/nsc_delete_export.md b/docs/nsc_delete_export.md
index b3c3674..a8745da 100644
--- a/docs/nsc_delete_export.md
+++ b/docs/nsc_delete_export.md
@@ -2,10 +2,6 @@
 
 Delete an export
 
-### Synopsis
-
-Delete an export
-
 ```
 nsc delete export [flags]
 ```
@@ -21,6 +17,7 @@ nsc delete export [flags]
 ### Options inherited from parent commands
 
 ```
+  -H, --all-dirs string       sets --config-dir, --data-dir, and --keystore-dir to the same value
       --config-dir string     nsc config directory
       --data-dir string       nsc data store directory
   -i, --interactive           ask questions for various settings
@@ -34,4 +31,4 @@ nsc delete export [flags]
 
 * [nsc delete](nsc_delete.md)	 - Delete imports and exports
 
-###### Auto generated by spf13/cobra on 25-Feb-2022
+###### Auto generated by spf13/cobra on 2-Jan-2025
diff --git a/docs/nsc_delete_import.md b/docs/nsc_delete_import.md
index 58e7085..a9478ef 100644
--- a/docs/nsc_delete_import.md
+++ b/docs/nsc_delete_import.md
@@ -2,10 +2,6 @@
 
 Delete an import
 
-### Synopsis
-
-Delete an import
-
 ```
 nsc delete import [flags]
 ```
@@ -29,6 +25,7 @@ nsc delete import -s "bar.>"
 ### Options inherited from parent commands
 
 ```
+  -H, --all-dirs string       sets --config-dir, --data-dir, and --keystore-dir to the same value
       --config-dir string     nsc config directory
       --data-dir string       nsc data store directory
   -i, --interactive           ask questions for various settings
@@ -42,4 +39,4 @@ nsc delete import -s "bar.>"
 
 * [nsc delete](nsc_delete.md)	 - Delete imports and exports
 
-###### Auto generated by spf13/cobra on 25-Feb-2022
+###### Auto generated by spf13/cobra on 2-Jan-2025
diff --git a/docs/nsc_delete_mapping.md b/docs/nsc_delete_mapping.md
index 8b422f2..30aa10a 100644
--- a/docs/nsc_delete_mapping.md
+++ b/docs/nsc_delete_mapping.md
@@ -2,10 +2,6 @@
 
 Delete a mapping
 
-### Synopsis
-
-Delete a mapping
-
 ```
 nsc delete mapping [flags]
 ```
@@ -14,6 +10,7 @@ nsc delete mapping [flags]
 
 ```
   -a, --account string   account name
+      --cluster string   in which cluster this mapping should apply
   -f, --from string      map from subject (required)
   -h, --help             help for mapping
   -t, --to string        to subject. When present, only that particular mapping is removed. Otherwise all mappings for from subject are.
@@ -22,6 +19,7 @@ nsc delete mapping [flags]
 ### Options inherited from parent commands
 
 ```
+  -H, --all-dirs string       sets --config-dir, --data-dir, and --keystore-dir to the same value
       --config-dir string     nsc config directory
       --data-dir string       nsc data store directory
   -i, --interactive           ask questions for various settings
@@ -35,4 +33,4 @@ nsc delete mapping [flags]
 
 * [nsc delete](nsc_delete.md)	 - Delete imports and exports
 
-###### Auto generated by spf13/cobra on 25-Feb-2022
+###### Auto generated by spf13/cobra on 2-Jan-2025
diff --git a/docs/nsc_delete_user.md b/docs/nsc_delete_user.md
index 5af28c7..2e42a80 100644
--- a/docs/nsc_delete_user.md
+++ b/docs/nsc_delete_user.md
@@ -2,10 +2,6 @@
 
 Delete an user
 
-### Synopsis
-
-Delete an user
-
 ```
 nsc delete user [flags]
 ```
@@ -31,6 +27,7 @@ nsc delete user -i
 ### Options inherited from parent commands
 
 ```
+  -H, --all-dirs string       sets --config-dir, --data-dir, and --keystore-dir to the same value
       --config-dir string     nsc config directory
       --data-dir string       nsc data store directory
   -i, --interactive           ask questions for various settings
@@ -44,4 +41,4 @@ nsc delete user -i
 
 * [nsc delete](nsc_delete.md)	 - Delete imports and exports
 
-###### Auto generated by spf13/cobra on 25-Feb-2022
+###### Auto generated by spf13/cobra on 2-Jan-2025
diff --git a/docs/nsc_describe.md b/docs/nsc_describe.md
index ec8233b..9f4ae80 100644
--- a/docs/nsc_describe.md
+++ b/docs/nsc_describe.md
@@ -2,10 +2,6 @@
 
 Describe assets such as operators, accounts, users, and jwt files
 
-### Synopsis
-
-Describe assets such as operators, accounts, users, and jwt files
-
 ### Options
 
 ```
@@ -19,6 +15,7 @@ Describe assets such as operators, accounts, users, and jwt files
 ### Options inherited from parent commands
 
 ```
+  -H, --all-dirs string       sets --config-dir, --data-dir, and --keystore-dir to the same value
       --config-dir string     nsc config directory
       --data-dir string       nsc data store directory
   -i, --interactive           ask questions for various settings
@@ -36,4 +33,4 @@ Describe assets such as operators, accounts, users, and jwt files
 * [nsc describe operator](nsc_describe_operator.md)	 - Describes the operator
 * [nsc describe user](nsc_describe_user.md)	 - Describes an user
 
-###### Auto generated by spf13/cobra on 25-Feb-2022
+###### Auto generated by spf13/cobra on 2-Jan-2025
diff --git a/docs/nsc_describe_account.md b/docs/nsc_describe_account.md
index 205dd49..d4e009b 100644
--- a/docs/nsc_describe_account.md
+++ b/docs/nsc_describe_account.md
@@ -2,10 +2,6 @@
 
 Describes an account
 
-### Synopsis
-
-Describes an account
-
 ```
 nsc describe account [flags]
 ```
@@ -21,6 +17,7 @@ nsc describe account [flags]
 ### Options inherited from parent commands
 
 ```
+  -H, --all-dirs string       sets --config-dir, --data-dir, and --keystore-dir to the same value
       --config-dir string     nsc config directory
       --data-dir string       nsc data store directory
   -F, --field string          extract value from specified field using json structure
@@ -38,4 +35,4 @@ nsc describe account [flags]
 
 * [nsc describe](nsc_describe.md)	 - Describe assets such as operators, accounts, users, and jwt files
 
-###### Auto generated by spf13/cobra on 25-Feb-2022
+###### Auto generated by spf13/cobra on 2-Jan-2025
diff --git a/docs/nsc_describe_jwt.md b/docs/nsc_describe_jwt.md
index 5714343..1fa6a58 100644
--- a/docs/nsc_describe_jwt.md
+++ b/docs/nsc_describe_jwt.md
@@ -2,10 +2,6 @@
 
 Describe a jwt/creds file
 
-### Synopsis
-
-Describe a jwt/creds file
-
 ```
 nsc describe jwt [flags]
 ```
@@ -13,7 +9,7 @@ nsc describe jwt [flags]
 ### Examples
 
 ```
-nsc describe -f pathorurl
+nsc describe jwt -f pathorurl
 ```
 
 ### Options
@@ -27,6 +23,7 @@ nsc describe -f pathorurl
 ### Options inherited from parent commands
 
 ```
+  -H, --all-dirs string       sets --config-dir, --data-dir, and --keystore-dir to the same value
       --config-dir string     nsc config directory
       --data-dir string       nsc data store directory
   -F, --field string          extract value from specified field using json structure
@@ -44,4 +41,4 @@ nsc describe -f pathorurl
 
 * [nsc describe](nsc_describe.md)	 - Describe assets such as operators, accounts, users, and jwt files
 
-###### Auto generated by spf13/cobra on 25-Feb-2022
+###### Auto generated by spf13/cobra on 2-Jan-2025
diff --git a/docs/nsc_describe_operator.md b/docs/nsc_describe_operator.md
index 7fa04bf..4690884 100644
--- a/docs/nsc_describe_operator.md
+++ b/docs/nsc_describe_operator.md
@@ -2,10 +2,6 @@
 
 Describes the operator
 
-### Synopsis
-
-Describes the operator
-
 ```
 nsc describe operator [flags]
 ```
@@ -21,6 +17,7 @@ nsc describe operator [flags]
 ### Options inherited from parent commands
 
 ```
+  -H, --all-dirs string       sets --config-dir, --data-dir, and --keystore-dir to the same value
       --config-dir string     nsc config directory
       --data-dir string       nsc data store directory
   -F, --field string          extract value from specified field using json structure
@@ -38,4 +35,4 @@ nsc describe operator [flags]
 
 * [nsc describe](nsc_describe.md)	 - Describe assets such as operators, accounts, users, and jwt files
 
-###### Auto generated by spf13/cobra on 25-Feb-2022
+###### Auto generated by spf13/cobra on 2-Jan-2025
diff --git a/docs/nsc_describe_user.md b/docs/nsc_describe_user.md
index 2eb6c66..a83d389 100644
--- a/docs/nsc_describe_user.md
+++ b/docs/nsc_describe_user.md
@@ -2,10 +2,6 @@
 
 Describes an user
 
-### Synopsis
-
-Describes an user
-
 ```
 nsc describe user [flags]
 ```
@@ -22,6 +18,7 @@ nsc describe user [flags]
 ### Options inherited from parent commands
 
 ```
+  -H, --all-dirs string       sets --config-dir, --data-dir, and --keystore-dir to the same value
       --config-dir string     nsc config directory
       --data-dir string       nsc data store directory
   -F, --field string          extract value from specified field using json structure
@@ -39,4 +36,4 @@ nsc describe user [flags]
 
 * [nsc describe](nsc_describe.md)	 - Describe assets such as operators, accounts, users, and jwt files
 
-###### Auto generated by spf13/cobra on 25-Feb-2022
+###### Auto generated by spf13/cobra on 2-Jan-2025
diff --git a/docs/nsc_edit.md b/docs/nsc_edit.md
index 95dfa23..a1f97d2 100644
--- a/docs/nsc_edit.md
+++ b/docs/nsc_edit.md
@@ -2,10 +2,6 @@
 
 Edit assets such as accounts, imports, and users
 
-### Synopsis
-
-Edit assets such as accounts, imports, and users
-
 ### Options
 
 ```
@@ -15,6 +11,7 @@ Edit assets such as accounts, imports, and users
 ### Options inherited from parent commands
 
 ```
+  -H, --all-dirs string       sets --config-dir, --data-dir, and --keystore-dir to the same value
       --config-dir string     nsc config directory
       --data-dir string       nsc data store directory
   -i, --interactive           ask questions for various settings
@@ -28,9 +25,10 @@ Edit assets such as accounts, imports, and users
 
 * [nsc](nsc.md)	 - nsc creates NATS operators, accounts, users, and manage their permissions.
 * [nsc edit account](nsc_edit_account.md)	 - Edit an account
+* [nsc edit authcallout](nsc_edit_authcallout.md)	 - Edit an account authorization callout
 * [nsc edit export](nsc_edit_export.md)	 - Edit an export
 * [nsc edit operator](nsc_edit_operator.md)	 - Edit the operator
 * [nsc edit signing-key](nsc_edit_signing-key.md)	 - Edit a scoped signing key or promote a signing key to be scoped
 * [nsc edit user](nsc_edit_user.md)	 - Edit an user
 
-###### Auto generated by spf13/cobra on 25-Feb-2022
+###### Auto generated by spf13/cobra on 2-Jan-2025
diff --git a/docs/nsc_edit_account.md b/docs/nsc_edit_account.md
index bb151ac..f1099c9 100644
--- a/docs/nsc_edit_account.md
+++ b/docs/nsc_edit_account.md
@@ -2,10 +2,6 @@
 
 Edit an account
 
-### Synopsis
-
-Edit an account
-
 ```
 nsc edit account [flags]
 ```
@@ -13,43 +9,55 @@ nsc edit account [flags]
 ### Options
 
 ```
-      --allow-pub strings            add publish default permissions - comma separated list or option can be specified multiple times
-      --allow-pub-response int[=1]   default permissions to limit how often a client can publish to reply subjects [with an optional count, --allow-pub-response=n] (global)
-      --allow-pubsub strings         add publish and subscribe default permissions - comma separated list or option can be specified multiple times
-      --allow-sub strings            add subscribe default permissions - comma separated list or option can be specified multiple times
-      --conns number                 set maximum active connections for the account (-1 is unlimited) (default -1)
-      --data number                  set maximum data in bytes for the account (-1 is unlimited) (default -1)
-      --deny-pub strings             add deny publish default permissions - comma separated list or option can be specified multiple times
-      --deny-pubsub strings          add deny publish and subscribe default permissions - comma separated list or option can be specified multiple times
-      --deny-sub strings             add deny subscribe default permissions - comma separated list or option can be specified multiple times
-      --description string           Description for this account
-      --expiry string                valid until ('0' is always, '2M' is two months) - yyyy-mm-dd, #m(inutes), #h(ours), #d(ays), #w(eeks), #M(onths), #y(ears) (default "0")
-      --exports number               set maximum number of exports for the account (-1 is unlimited) (default -1)
-  -h, --help                         help for account
-      --imports number               set maximum number of imports for the account (-1 is unlimited) (default -1)
-      --info-url string              Link for more info on this account
-      --js-consumer number           Jetstream: set maximum consumer for the account (-1 is unlimited) (default -1)
-      --js-disk-storage number       Jetstream: set maximum disk storage in bytes for the account (-1 is unlimited / 0 disabled) (units: k/m/g/t kib/mib/gib/tib)
-      --js-mem-storage number        Jetstream: set maximum memory storage in bytes for the account (-1 is unlimited / 0 disabled) (units: k/m/g/t kib/mib/gib/tib)
-      --js-streams number            Jetstream: set maximum streams for the account (-1 is unlimited) (default -1)
-      --leaf-conns number            set maximum active leaf node connections for the account (-1 is unlimited)
-  -n, --name string                  account to edit
-      --payload number               set maximum message payload in bytes for the account (-1 is unlimited) (default -1)
-      --response-ttl string          the amount of time the default permissions is valid (global) - [#ms(millis) | #s(econds) | m(inutes) | h(ours)] - Default is no time limit.
-      --rm strings                   remove publish/subscribe and deny default permissions - comma separated list or option can be specified multiple times
-      --rm-response-perms            remove response settings from default permissions
-      --rm-sk strings                remove signing key - comma separated list or option can be specified multiple times
-      --rm-tag strings               remove tag - comma separated list or option can be specified multiple times
-      --sk strings                   signing key or keypath or the value "generate"" to generate a key pair on the fly - comma separated list or option can be specified multiple times
-      --start string                 valid from ('0' is always, '3d' is three days) - yyyy-mm-dd, #m(inutes), #h(ours), #d(ays), #w(eeks), #M(onths), #y(ears) (default "0")
-      --subscriptions number         set maximum subscription for the account (-1 is unlimited) (default -1)
-      --tag strings                  add tags for user - comma separated list or option can be specified multiple times
-      --wildcard-exports             exports can contain wildcards (default true)
+      --allow-pub strings               add publish default permissions - comma separated list or option can be specified multiple times
+      --allow-pub-response int[=1]      default permissions to limit how often a client can publish to reply subjects [with an optional count, --allow-pub-response=n] (global)
+      --allow-pubsub strings            add publish and subscribe default permissions - comma separated list or option can be specified multiple times
+      --allow-sub strings               add subscribe default permissions - comma separated list or option can be specified multiple times
+      --conns number                    set maximum active connections for the account (-1 is unlimited) (default -1)
+      --data number                     set maximum data in bytes for the account (-1 is unlimited) (default -1)
+      --deny-pub strings                add deny publish default permissions - comma separated list or option can be specified multiple times
+      --deny-pubsub strings             add deny publish and subscribe default permissions - comma separated list or option can be specified multiple times
+      --deny-sub strings                add deny subscribe default permissions - comma separated list or option can be specified multiple times
+      --description string              Description for this account
+      --disallow-bearer                 require user jwt to not be bearer token
+      --expiry string                   valid until ('0' is always, '2M' is two months) - yyyy-mm-dd, #m(inutes), #h(ours), #d(ays), #w(eeks), #M(onths), #y(ears)
+      --exports number                  set maximum number of exports for the account (-1 is unlimited) (default -1)
+  -h, --help                            help for account
+      --imports number                  set maximum number of imports for the account (-1 is unlimited) (default -1)
+      --info-url string                 Link for more info on this account
+      --js-consumer number              JetStream: set maximum consumer for the account (-1 is unlimited) (default -1)
+      --js-disable                      disables all JetStream limits in the account by deleting any limits
+      --js-disk-storage number          JetStream: set maximum disk storage in bytes for the account (-1 is unlimited / 0 disabled) (units: k/m/g/t kib/mib/gib/tib)
+      --js-enable int                   enables JetStream for the specified tier (default -1)
+      --js-max-ack-pending number       JetStream: set number of maximum acks that can be pending for a consumer in the account (default -1)
+      --js-max-bytes-required           JetStream: set whether max stream is required when creating a stream
+      --js-max-disk-stream number       JetStream: set maximum size of a disk stream for the account (-1 is unlimited / 0 disabled) (units: k/m/g/t kib/mib/gib/tib) (default -1)
+      --js-max-mem-stream number        JetStream: set maximum size of a memory stream for the account (-1 is unlimited / 0 disabled) (units: k/m/g/t kib/mib/gib/tib) (default -1)
+      --js-mem-storage number           JetStream: set maximum memory storage in bytes for the account (-1 is unlimited / 0 disabled) (units: k/m/g/t kib/mib/gib/tib)
+      --js-streams number               JetStream: set maximum streams for the account (-1 is unlimited) (default -1)
+      --js-tier int                     JetStream: replication tier (0 creates a configuration that applies to all assets) 
+      --leaf-conns number               set maximum active leaf node connections for the account (-1 is unlimited)
+  -n, --name string                     account to edit
+      --payload number                  set maximum message payload in bytes for the account (-1 is unlimited) (default -1)
+      --response-ttl string             the amount of time the default permissions is valid (global) - [#ms(millis) | #s(econds) | m(inutes) | h(ours)] - Default is no time limit.
+      --rm strings                      remove publish/subscribe and deny default permissions - comma separated list or option can be specified multiple times
+      --rm-js-tier int                  JetStream: remove replication limits for the specified tier (0 is the global tier) this flag is exclusive of all other js flags (default -1)
+      --rm-response-perms               remove response settings from default permissions
+      --rm-sk strings                   remove signing key - comma separated list or option can be specified multiple times
+      --rm-tag strings                  remove tag - comma separated list or option can be specified multiple times
+      --sk strings                      signing key or keypath or the value "generate" to generate a key pair on the fly - comma separated list or option can be specified multiple times
+      --start string                    valid from ('0' is always, '3d' is three days) - yyyy-mm-dd, #m(inutes), #h(ours), #d(ays), #w(eeks), #M(onths), #y(ears)
+      --subscriptions number            set maximum subscription for the account (-1 is unlimited) (default -1)
+      --tag strings                     add tags for user - comma separated list or option can be specified multiple times
+      --trace-context-sampling number   set the trace context sampling rate (1-100) - 0 default is 100
+      --trace-context-subject string    sets the subject where w3c trace context information is sent. Set to "" to disable (default "trace.messages")
+      --wildcard-exports                exports can contain wildcards (default true)
 ```
 
 ### Options inherited from parent commands
 
 ```
+  -H, --all-dirs string       sets --config-dir, --data-dir, and --keystore-dir to the same value
       --config-dir string     nsc config directory
       --data-dir string       nsc data store directory
   -i, --interactive           ask questions for various settings
@@ -63,4 +71,4 @@ nsc edit account [flags]
 
 * [nsc edit](nsc_edit.md)	 - Edit assets such as accounts, imports, and users
 
-###### Auto generated by spf13/cobra on 25-Feb-2022
+###### Auto generated by spf13/cobra on 2-Jan-2025
diff --git a/docs/nsc_edit_authcallout.md b/docs/nsc_edit_authcallout.md
new file mode 100644
index 0000000..68c118f
--- /dev/null
+++ b/docs/nsc_edit_authcallout.md
@@ -0,0 +1,40 @@
+## nsc edit authcallout
+
+Edit an account authorization callout
+
+```
+nsc edit authcallout [flags]
+```
+
+### Options
+
+```
+  -a, --account string               account name
+      --allowed-account strings      adds an account public key that the authorization service can bind authorized users to (specify '*' to allow any account that the service can generate users for)
+      --auth-user strings            adds a user public key that bypasses the authorization callout and is used by the authorization service itself
+  -x, --curve string                 curve key or keypath or the value "generate" to generate a curve encryption target key on the fly
+      --disable                      disable external authorization
+  -h, --help                         help for authcallout
+      --rm-allowed-account strings   removes an account public key or the '*' wildcard that the authorization service can bind authorized users to
+      --rm-auth-user strings         removes a user public key that bypasses the authorization callout and is used by the authorization service itself
+      --rm-curve                     remove curve encryption target
+```
+
+### Options inherited from parent commands
+
+```
+  -H, --all-dirs string       sets --config-dir, --data-dir, and --keystore-dir to the same value
+      --config-dir string     nsc config directory
+      --data-dir string       nsc data store directory
+  -i, --interactive           ask questions for various settings
+      --keystore-dir string   nsc keystore directory
+  -K, --private-key string    Key used to sign. Can be specified as role (where applicable),
+                              public key (private portion is retrieved)
+                              or file path to a private key or private key 
+```
+
+### SEE ALSO
+
+* [nsc edit](nsc_edit.md)	 - Edit assets such as accounts, imports, and users
+
+###### Auto generated by spf13/cobra on 2-Jan-2025
diff --git a/docs/nsc_edit_export.md b/docs/nsc_edit_export.md
index 9aabd8f..906c0de 100644
--- a/docs/nsc_edit_export.md
+++ b/docs/nsc_edit_export.md
@@ -2,10 +2,6 @@
 
 Edit an export
 
-### Synopsis
-
-Edit an export
-
 ```
 nsc edit export [flags]
 ```
@@ -14,6 +10,7 @@ nsc edit export [flags]
 
 ```
   -a, --account string                account name
+      --allow-trace                   allow trace requests
       --description string            Description for this export
   -h, --help                          help for export
       --info-url string               Link for more info on this export
@@ -31,6 +28,7 @@ nsc edit export [flags]
 ### Options inherited from parent commands
 
 ```
+  -H, --all-dirs string       sets --config-dir, --data-dir, and --keystore-dir to the same value
       --config-dir string     nsc config directory
       --data-dir string       nsc data store directory
   -i, --interactive           ask questions for various settings
@@ -44,4 +42,4 @@ nsc edit export [flags]
 
 * [nsc edit](nsc_edit.md)	 - Edit assets such as accounts, imports, and users
 
-###### Auto generated by spf13/cobra on 25-Feb-2022
+###### Auto generated by spf13/cobra on 2-Jan-2025
diff --git a/docs/nsc_edit_operator.md b/docs/nsc_edit_operator.md
index ee438e9..1961dec 100644
--- a/docs/nsc_edit_operator.md
+++ b/docs/nsc_edit_operator.md
@@ -2,10 +2,6 @@
 
 Edit the operator
 
-### Synopsis
-
-Edit the operator
-
 ```
 nsc edit operator [flags]
 ```
@@ -13,17 +9,17 @@ nsc edit operator [flags]
 ### Options
 
 ```
-  -u, --account-jwt-server-url string   set account jwt server url for nsc sync (only http/https/nats urls supported if updating with nsc)
-      --expiry string                   valid until ('0' is always, '2M' is two months) - yyyy-mm-dd, #m(inutes), #h(ours), #d(ays), #w(eeks), #M(onths), #y(ears) (default "0")
+  -u, --account-jwt-server-url string   set account jwt server url for nsc sync (only http/https or nats service (nats/tls/ws/wss) urls supported if updating with nsc)
+      --expiry string                   valid until ('0' is always, '2M' is two months) - yyyy-mm-dd, #m(inutes), #h(ours), #d(ays), #w(eeks), #M(onths), #y(ears)
   -h, --help                            help for operator
       --require-signing-keys            require accounts/user to be signed with a signing key
       --rm-account-jwt-server-url       clear account server url
-      --rm-service-url strings          remove an operator service url for nsc where clients can access the NATS service (only nats/tls urls supported)
+      --rm-service-url strings          remove an operator service url for nsc where clients can access the NATS service (only nats/tls/ws/wss urls supported)
       --rm-sk strings                   remove signing key - comma separated list or option can be specified multiple times
       --rm-tag strings                  remove tag - comma separated list or option can be specified multiple times
-  -n, --service-url strings             add an operator service url for nsc where clients can access the NATS service (only nats/tls urls supported)
-      --sk strings                      signing key or keypath or the value "generate"" to generate a key pair on the fly - comma separated list or option can be specified multiple times
-      --start string                    valid from ('0' is always, '3d' is three days) - yyyy-mm-dd, #m(inutes), #h(ours), #d(ays), #w(eeks), #M(onths), #y(ears) (default "0")
+  -n, --service-url strings             add an operator service url for nsc where clients can access the NATS service (only nats/tls/ws/wss urls supported)
+      --sk strings                      signing key or keypath or the value "generate" to generate a key pair on the fly - comma separated list or option can be specified multiple times
+      --start string                    valid from ('0' is always, '3d' is three days) - yyyy-mm-dd, #m(inutes), #h(ours), #d(ays), #w(eeks), #M(onths), #y(ears)
       --system-account string           set system account by account by public key or name
       --tag strings                     add tags for user - comma separated list or option can be specified multiple times
 ```
@@ -31,6 +27,7 @@ nsc edit operator [flags]
 ### Options inherited from parent commands
 
 ```
+  -H, --all-dirs string       sets --config-dir, --data-dir, and --keystore-dir to the same value
       --config-dir string     nsc config directory
       --data-dir string       nsc data store directory
   -i, --interactive           ask questions for various settings
@@ -44,4 +41,4 @@ nsc edit operator [flags]
 
 * [nsc edit](nsc_edit.md)	 - Edit assets such as accounts, imports, and users
 
-###### Auto generated by spf13/cobra on 25-Feb-2022
+###### Auto generated by spf13/cobra on 2-Jan-2025
diff --git a/docs/nsc_edit_signing-key.md b/docs/nsc_edit_signing-key.md
index 8c4fe19..174f3f4 100644
--- a/docs/nsc_edit_signing-key.md
+++ b/docs/nsc_edit_signing-key.md
@@ -23,11 +23,12 @@ nsc edit signing-key [flags]
       --allow-pubsub strings         add publish and subscribe permissions - comma separated list or option can be specified multiple times
       --allow-sub strings            add subscribe permissions - comma separated list or option can be specified multiple times
       --bearer                       no connect challenge required for user
-      --conn-type strings            set allowed connection types: LEAFNODE MQTT STANDARD WEBSOCKET LEAFNODE_WS MQTT_WS - comma separated list or option can be specified multiple times
+      --conn-type strings            set allowed connection types: LEAFNODE MQTT STANDARD WEBSOCKET LEAFNODE_WS MQTT_WS IN_PROCESS - comma separated list or option can be specified multiple times
       --data number                  set maximum data in bytes for the user (-1 is unlimited) (default -1)
       --deny-pub strings             add deny publish permissions - comma separated list or option can be specified multiple times
       --deny-pubsub strings          add deny publish and subscribe permissions - comma separated list or option can be specified multiple times
       --deny-sub strings             add deny subscribe permissions - comma separated list or option can be specified multiple times
+      --description string           user description associated with the role
   -h, --help                         help for signing-key
       --locale time-locale           set the locale with which time values are interpreted
       --payload number               set maximum message payload in bytes for the account (-1 is unlimited) (default -1)
@@ -38,7 +39,7 @@ nsc edit signing-key [flags]
       --rm-source-network strings    remove source network for connection - comma separated list or option can be specified multiple times
       --rm-time strings              remove start-end time by start time "hh:mm:ss" (option can be specified multiple times)
       --role string                  role associated with the signing key scope
-      --sk string                    signing key to set scope for or role name for already existing scoped signing key
+      --sk strings                   signing key or keypath or the value "generate" to generate a key pair on the fly
       --source-network strings       add source network for connection - comma separated list or option can be specified multiple times
       --subs int                     set maximum number of subscriptions (-1 is unlimited) (default -1)
       --time time-ranges             add start-end time range of the form "hh:mm:ss-hh:mm:ss" (option can be specified multiple times) (default [])
@@ -47,6 +48,7 @@ nsc edit signing-key [flags]
 ### Options inherited from parent commands
 
 ```
+  -H, --all-dirs string       sets --config-dir, --data-dir, and --keystore-dir to the same value
       --config-dir string     nsc config directory
       --data-dir string       nsc data store directory
   -i, --interactive           ask questions for various settings
@@ -60,4 +62,4 @@ nsc edit signing-key [flags]
 
 * [nsc edit](nsc_edit.md)	 - Edit assets such as accounts, imports, and users
 
-###### Auto generated by spf13/cobra on 25-Feb-2022
+###### Auto generated by spf13/cobra on 2-Jan-2025
diff --git a/docs/nsc_edit_user.md b/docs/nsc_edit_user.md
index 391a400..ceb3de3 100644
--- a/docs/nsc_edit_user.md
+++ b/docs/nsc_edit_user.md
@@ -25,7 +25,7 @@ nsc edit user --name <n> --rm <subject>,...
 # To dynamically allow publishing to reply subjects, this works well for service responders:
 nsc edit user --name <n> --allow-pub-response
 
-# A permission to publish a response can be removed after a duration from when 
+# A permission to publish a response can be removed after a duration from when
 # the message was received:
 nsc edit user --name <n> --allow-pub-response --response-ttl 5s
 
@@ -51,12 +51,12 @@ nsc edit user [flags]
       --allow-pubsub strings         add publish and subscribe permissions - comma separated list or option can be specified multiple times
       --allow-sub strings            add subscribe permissions - comma separated list or option can be specified multiple times
       --bearer                       no connect challenge required for user
-      --conn-type strings            set allowed connection types: LEAFNODE MQTT STANDARD WEBSOCKET LEAFNODE_WS MQTT_WS - comma separated list or option can be specified multiple times
+      --conn-type strings            set allowed connection types: LEAFNODE MQTT STANDARD WEBSOCKET LEAFNODE_WS MQTT_WS IN_PROCESS - comma separated list or option can be specified multiple times
       --data number                  set maximum data in bytes for the user (-1 is unlimited) (default -1)
       --deny-pub strings             add deny publish permissions - comma separated list or option can be specified multiple times
       --deny-pubsub strings          add deny publish and subscribe permissions - comma separated list or option can be specified multiple times
       --deny-sub strings             add deny subscribe permissions - comma separated list or option can be specified multiple times
-      --expiry string                valid until ('0' is always, '2M' is two months) - yyyy-mm-dd, #m(inutes), #h(ours), #d(ays), #w(eeks), #M(onths), #y(ears) (default "0")
+      --expiry string                valid until ('0' is always, '2M' is two months) - yyyy-mm-dd, #m(inutes), #h(ours), #d(ays), #w(eeks), #M(onths), #y(ears)
   -h, --help                         help for user
       --locale time-locale           set the locale with which time values are interpreted
   -n, --name string                  user name
@@ -69,7 +69,7 @@ nsc edit user [flags]
       --rm-tag strings               remove tag - comma separated list or option can be specified multiple times
       --rm-time strings              remove start-end time by start time "hh:mm:ss" (option can be specified multiple times)
       --source-network strings       add source network for connection - comma separated list or option can be specified multiple times
-      --start string                 valid from ('0' is always, '3d' is three days) - yyyy-mm-dd, #m(inutes), #h(ours), #d(ays), #w(eeks), #M(onths), #y(ears) (default "0")
+      --start string                 valid from ('0' is always, '3d' is three days) - yyyy-mm-dd, #m(inutes), #h(ours), #d(ays), #w(eeks), #M(onths), #y(ears)
       --subs int                     set maximum number of subscriptions (-1 is unlimited) (default -1)
       --tag strings                  add tags for user - comma separated list or option can be specified multiple times
       --time time-ranges             add start-end time range of the form "hh:mm:ss-hh:mm:ss" (option can be specified multiple times) (default [])
@@ -78,6 +78,7 @@ nsc edit user [flags]
 ### Options inherited from parent commands
 
 ```
+  -H, --all-dirs string       sets --config-dir, --data-dir, and --keystore-dir to the same value
       --config-dir string     nsc config directory
       --data-dir string       nsc data store directory
   -i, --interactive           ask questions for various settings
@@ -91,4 +92,4 @@ nsc edit user [flags]
 
 * [nsc edit](nsc_edit.md)	 - Edit assets such as accounts, imports, and users
 
-###### Auto generated by spf13/cobra on 25-Feb-2022
+###### Auto generated by spf13/cobra on 2-Jan-2025
diff --git a/docs/nsc_env.md b/docs/nsc_env.md
index fe4257f..7be6523 100644
--- a/docs/nsc_env.md
+++ b/docs/nsc_env.md
@@ -2,10 +2,6 @@
 
 Prints and manage the nsc environment
 
-### Synopsis
-
-Prints and manage the nsc environment
-
 ```
 nsc env [flags]
 ```
@@ -28,6 +24,7 @@ env
 ### Options inherited from parent commands
 
 ```
+  -H, --all-dirs string       sets --config-dir, --data-dir, and --keystore-dir to the same value
       --config-dir string     nsc config directory
       --data-dir string       nsc data store directory
   -i, --interactive           ask questions for various settings
@@ -41,4 +38,4 @@ env
 
 * [nsc](nsc.md)	 - nsc creates NATS operators, accounts, users, and manage their permissions.
 
-###### Auto generated by spf13/cobra on 25-Feb-2022
+###### Auto generated by spf13/cobra on 2-Jan-2025
diff --git a/docs/nsc_expirations.md b/docs/nsc_expirations.md
new file mode 100644
index 0000000..686f423
--- /dev/null
+++ b/docs/nsc_expirations.md
@@ -0,0 +1,45 @@
+## nsc expirations
+
+Create a new expiration report
+
+```
+nsc expirations [flags]
+```
+
+### Examples
+
+```
+expirations --skip --within 1w (reports entities that are expiring within on week)
+expirations --json --within 3M (reports in JSON all entities marking those expiring within a month)
+
+```
+
+### Options
+
+```
+  -h, --help            help for expirations
+      --json            print the expiration report in json format to stdout
+      --skip            skip reporting entities that are not expired or expiring soon
+  -e, --within string   print an expiration report for entities that expire within the specified duration.
+                        Supported are YYYY-MM-DD for absolute, and relative of now
+                         (m)inute, (h)our, (d)ay, (w)week, (M)onth, (y)ear expressions (default "1M")
+```
+
+### Options inherited from parent commands
+
+```
+  -H, --all-dirs string       sets --config-dir, --data-dir, and --keystore-dir to the same value
+      --config-dir string     nsc config directory
+      --data-dir string       nsc data store directory
+  -i, --interactive           ask questions for various settings
+      --keystore-dir string   nsc keystore directory
+  -K, --private-key string    Key used to sign. Can be specified as role (where applicable),
+                              public key (private portion is retrieved)
+                              or file path to a private key or private key 
+```
+
+### SEE ALSO
+
+* [nsc](nsc.md)	 - nsc creates NATS operators, accounts, users, and manage their permissions.
+
+###### Auto generated by spf13/cobra on 2-Jan-2025
diff --git a/docs/nsc_export.md b/docs/nsc_export.md
index 46240b2..88d713f 100644
--- a/docs/nsc_export.md
+++ b/docs/nsc_export.md
@@ -2,10 +2,6 @@
 
 Export assets such as nkeys
 
-### Synopsis
-
-Export assets such as nkeys
-
 ### Options
 
 ```
@@ -15,6 +11,7 @@ Export assets such as nkeys
 ### Options inherited from parent commands
 
 ```
+  -H, --all-dirs string       sets --config-dir, --data-dir, and --keystore-dir to the same value
       --config-dir string     nsc config directory
       --data-dir string       nsc data store directory
   -i, --interactive           ask questions for various settings
@@ -29,4 +26,4 @@ Export assets such as nkeys
 * [nsc](nsc.md)	 - nsc creates NATS operators, accounts, users, and manage their permissions.
 * [nsc export keys](nsc_export_keys.md)	 - Export operator, account and user keys in the current operator and account context
 
-###### Auto generated by spf13/cobra on 25-Feb-2022
+###### Auto generated by spf13/cobra on 2-Jan-2025
diff --git a/docs/nsc_export_keys.md b/docs/nsc_export_keys.md
index 6c00b50..0e4ca0f 100644
--- a/docs/nsc_export_keys.md
+++ b/docs/nsc_export_keys.md
@@ -21,6 +21,10 @@ The --filter flag allows you to specify a few letters in a public key and export
 those keys that matching the filter (provided the key type matches --operator, --account,
 --user (or --all).
 
+The --include-jwts flag will export the JWT configurations named by their identity key.
+This allows you to export an entire configuration tree of operators, accounts, users
+and their keys to a directory. To recreate an environment from this export use 'nsc fix'.
+
 
 ```
 nsc export keys [flags]
@@ -44,10 +48,13 @@ nsc export keys --account <name> (changes the account context to the specified a
       --account string   change account context to the named account
   -a, --accounts         export account keys
   -A, --all              export operator, accounts and users keys
+      --curve string     export specified curve key
+      --curves           export curve keys
   -d, --dir string       directory to export keys to
   -f, --filter string    export keys containing string
   -F, --force            overwrite existing files
   -h, --help             help for keys
+      --include-jwts     include jwts
       --not-referenced   export keys that are not referenced in the current operator context
   -o, --operator         export operator keys
   -R, --remove           removes the original key file from the keyring after exporting it
@@ -58,6 +65,7 @@ nsc export keys --account <name> (changes the account context to the specified a
 ### Options inherited from parent commands
 
 ```
+  -H, --all-dirs string       sets --config-dir, --data-dir, and --keystore-dir to the same value
       --config-dir string     nsc config directory
       --data-dir string       nsc data store directory
   -i, --interactive           ask questions for various settings
@@ -71,4 +79,4 @@ nsc export keys --account <name> (changes the account context to the specified a
 
 * [nsc export](nsc_export.md)	 - Export assets such as nkeys
 
-###### Auto generated by spf13/cobra on 25-Feb-2022
+###### Auto generated by spf13/cobra on 2-Jan-2025
diff --git a/docs/nsc_generate.md b/docs/nsc_generate.md
index 5c4917c..db28651 100644
--- a/docs/nsc_generate.md
+++ b/docs/nsc_generate.md
@@ -2,10 +2,6 @@
 
 Generate activations, creds, configs or nkeys
 
-### Synopsis
-
-Generate activations, creds, configs or nkeys
-
 ### Options
 
 ```
@@ -15,6 +11,7 @@ Generate activations, creds, configs or nkeys
 ### Options inherited from parent commands
 
 ```
+  -H, --all-dirs string       sets --config-dir, --data-dir, and --keystore-dir to the same value
       --config-dir string     nsc config directory
       --data-dir string       nsc data store directory
   -i, --interactive           ask questions for various settings
@@ -29,8 +26,10 @@ Generate activations, creds, configs or nkeys
 * [nsc](nsc.md)	 - nsc creates NATS operators, accounts, users, and manage their permissions.
 * [nsc generate activation](nsc_generate_activation.md)	 - Generate an export activation jwt token
 * [nsc generate config](nsc_generate_config.md)	 - Generate an account config file for an operator
+* [nsc generate context](nsc_generate_context.md)	 - Generate nats cli user context
 * [nsc generate creds](nsc_generate_creds.md)	 - Generate a credentials file for an user
 * [nsc generate diagram](nsc_generate_diagram.md)	 - Generate diagrams for this store
 * [nsc generate nkey](nsc_generate_nkey.md)	 - Generates an nkey
+* [nsc generate profile](nsc_generate_profile.md)	 - Generate a profile from nsc 'URL' that can be used by tooling
 
-###### Auto generated by spf13/cobra on 25-Feb-2022
+###### Auto generated by spf13/cobra on 2-Jan-2025
diff --git a/docs/nsc_generate_activation.md b/docs/nsc_generate_activation.md
index 90254ca..efdf5f6 100644
--- a/docs/nsc_generate_activation.md
+++ b/docs/nsc_generate_activation.md
@@ -2,10 +2,6 @@
 
 Generate an export activation jwt token
 
-### Synopsis
-
-Generate an export activation jwt token
-
 ```
 nsc generate activation [flags]
 ```
@@ -14,11 +10,11 @@ nsc generate activation [flags]
 
 ```
   -a, --account string          account name
-      --expiry string           valid until ('0' is always, '2M' is two months) - yyyy-mm-dd, #m(inutes), #h(ours), #d(ays), #w(eeks), #M(onths), #y(ears) (default "0")
+      --expiry string           valid until ('0' is always, '2M' is two months) - yyyy-mm-dd, #m(inutes), #h(ours), #d(ays), #w(eeks), #M(onths), #y(ears)
   -h, --help                    help for activation
   -o, --output-file string      output file '--' is stdout (default "--")
       --push                    push activation token to operator's account server (exclusive of output-file
-      --start string            valid from ('0' is always, '3d' is three days) - yyyy-mm-dd, #m(inutes), #h(ours), #d(ays), #w(eeks), #M(onths), #y(ears) (default "0")
+      --start string            valid from ('0' is always, '3d' is three days) - yyyy-mm-dd, #m(inutes), #h(ours), #d(ays), #w(eeks), #M(onths), #y(ears)
   -s, --subject string          export subject
   -t, --target-account string   target-account
 ```
@@ -26,6 +22,7 @@ nsc generate activation [flags]
 ### Options inherited from parent commands
 
 ```
+  -H, --all-dirs string       sets --config-dir, --data-dir, and --keystore-dir to the same value
       --config-dir string     nsc config directory
       --data-dir string       nsc data store directory
   -i, --interactive           ask questions for various settings
@@ -39,4 +36,4 @@ nsc generate activation [flags]
 
 * [nsc generate](nsc_generate.md)	 - Generate activations, creds, configs or nkeys
 
-###### Auto generated by spf13/cobra on 25-Feb-2022
+###### Auto generated by spf13/cobra on 2-Jan-2025
diff --git a/docs/nsc_generate_config.md b/docs/nsc_generate_config.md
index 66c5455..d81d384 100644
--- a/docs/nsc_generate_config.md
+++ b/docs/nsc_generate_config.md
@@ -2,10 +2,6 @@
 
 Generate an account config file for an operator
 
-### Synopsis
-
-Generate an account config file for an operator
-
 ```
 nsc generate config [flags]
 ```
@@ -36,6 +32,7 @@ nsc generate config --nats-resolver-cache
 ### Options inherited from parent commands
 
 ```
+  -H, --all-dirs string       sets --config-dir, --data-dir, and --keystore-dir to the same value
       --config-dir string     nsc config directory
       --data-dir string       nsc data store directory
   -i, --interactive           ask questions for various settings
@@ -49,4 +46,4 @@ nsc generate config --nats-resolver-cache
 
 * [nsc generate](nsc_generate.md)	 - Generate activations, creds, configs or nkeys
 
-###### Auto generated by spf13/cobra on 25-Feb-2022
+###### Auto generated by spf13/cobra on 2-Jan-2025
diff --git a/docs/nsc_generate_context.md b/docs/nsc_generate_context.md
new file mode 100644
index 0000000..f6967ef
--- /dev/null
+++ b/docs/nsc_generate_context.md
@@ -0,0 +1,41 @@
+## nsc generate context
+
+Generate nats cli user context
+
+```
+nsc generate context [flags]
+```
+
+### Examples
+
+```
+nsc generate context --account a --user u --context contextName
+```
+
+### Options
+
+```
+  -a, --account string   account name
+      --context string   context name
+  -h, --help             help for context
+  -u, --user string      user name
+```
+
+### Options inherited from parent commands
+
+```
+  -H, --all-dirs string       sets --config-dir, --data-dir, and --keystore-dir to the same value
+      --config-dir string     nsc config directory
+      --data-dir string       nsc data store directory
+  -i, --interactive           ask questions for various settings
+      --keystore-dir string   nsc keystore directory
+  -K, --private-key string    Key used to sign. Can be specified as role (where applicable),
+                              public key (private portion is retrieved)
+                              or file path to a private key or private key 
+```
+
+### SEE ALSO
+
+* [nsc generate](nsc_generate.md)	 - Generate activations, creds, configs or nkeys
+
+###### Auto generated by spf13/cobra on 2-Jan-2025
diff --git a/docs/nsc_generate_creds.md b/docs/nsc_generate_creds.md
index d59a51c..1ad4008 100644
--- a/docs/nsc_generate_creds.md
+++ b/docs/nsc_generate_creds.md
@@ -2,10 +2,6 @@
 
 Generate a credentials file for an user
 
-### Synopsis
-
-Generate a credentials file for an user
-
 ```
 nsc generate creds [flags]
 ```
@@ -28,6 +24,7 @@ nsc generate creds --account a --name u
 ### Options inherited from parent commands
 
 ```
+  -H, --all-dirs string       sets --config-dir, --data-dir, and --keystore-dir to the same value
       --config-dir string     nsc config directory
       --data-dir string       nsc data store directory
   -i, --interactive           ask questions for various settings
@@ -41,4 +38,4 @@ nsc generate creds --account a --name u
 
 * [nsc generate](nsc_generate.md)	 - Generate activations, creds, configs or nkeys
 
-###### Auto generated by spf13/cobra on 25-Feb-2022
+###### Auto generated by spf13/cobra on 2-Jan-2025
diff --git a/docs/nsc_generate_diagram.md b/docs/nsc_generate_diagram.md
index 8edf871..ecec45f 100644
--- a/docs/nsc_generate_diagram.md
+++ b/docs/nsc_generate_diagram.md
@@ -2,10 +2,6 @@
 
 Generate diagrams for this store
 
-### Synopsis
-
-Generate diagrams for this store
-
 ### Options
 
 ```
@@ -16,6 +12,7 @@ Generate diagrams for this store
 ### Options inherited from parent commands
 
 ```
+  -H, --all-dirs string       sets --config-dir, --data-dir, and --keystore-dir to the same value
       --config-dir string     nsc config directory
       --data-dir string       nsc data store directory
   -i, --interactive           ask questions for various settings
@@ -31,4 +28,4 @@ Generate diagrams for this store
 * [nsc generate diagram component](nsc_generate_diagram_component.md)	 - Generate a plantuml component diagram for this store
 * [nsc generate diagram object](nsc_generate_diagram_object.md)	 - Generate a plantuml object diagram for this store
 
-###### Auto generated by spf13/cobra on 25-Feb-2022
+###### Auto generated by spf13/cobra on 2-Jan-2025
diff --git a/docs/nsc_generate_diagram_component.md b/docs/nsc_generate_diagram_component.md
index c8f2647..052498b 100644
--- a/docs/nsc_generate_diagram_component.md
+++ b/docs/nsc_generate_diagram_component.md
@@ -2,10 +2,6 @@
 
 Generate a plantuml component diagram for this store
 
-### Synopsis
-
-Generate a plantuml component diagram for this store
-
 ```
 nsc generate diagram component [flags]
 ```
@@ -26,6 +22,7 @@ nsc generate diagram component
 ### Options inherited from parent commands
 
 ```
+  -H, --all-dirs string       sets --config-dir, --data-dir, and --keystore-dir to the same value
       --config-dir string     nsc config directory
       --data-dir string       nsc data store directory
   -i, --interactive           ask questions for various settings
@@ -40,4 +37,4 @@ nsc generate diagram component
 
 * [nsc generate diagram](nsc_generate_diagram.md)	 - Generate diagrams for this store
 
-###### Auto generated by spf13/cobra on 25-Feb-2022
+###### Auto generated by spf13/cobra on 2-Jan-2025
diff --git a/docs/nsc_generate_diagram_object.md b/docs/nsc_generate_diagram_object.md
index 5ac0f93..7e99d9e 100644
--- a/docs/nsc_generate_diagram_object.md
+++ b/docs/nsc_generate_diagram_object.md
@@ -2,10 +2,6 @@
 
 Generate a plantuml object diagram for this store
 
-### Synopsis
-
-Generate a plantuml object diagram for this store
-
 ```
 nsc generate diagram object [flags]
 ```
@@ -28,6 +24,7 @@ nsc generate diagram object
 ### Options inherited from parent commands
 
 ```
+  -H, --all-dirs string       sets --config-dir, --data-dir, and --keystore-dir to the same value
       --config-dir string     nsc config directory
       --data-dir string       nsc data store directory
   -i, --interactive           ask questions for various settings
@@ -42,4 +39,4 @@ nsc generate diagram object
 
 * [nsc generate diagram](nsc_generate_diagram.md)	 - Generate diagrams for this store
 
-###### Auto generated by spf13/cobra on 25-Feb-2022
+###### Auto generated by spf13/cobra on 2-Jan-2025
diff --git a/docs/nsc_generate_nkey.md b/docs/nsc_generate_nkey.md
index 5f7029d..183d5a4 100644
--- a/docs/nsc_generate_nkey.md
+++ b/docs/nsc_generate_nkey.md
@@ -2,10 +2,6 @@
 
 Generates an nkey
 
-### Synopsis
-
-Generates an nkey
-
 ```
 nsc generate nkey [flags]
 ```
@@ -14,6 +10,7 @@ nsc generate nkey [flags]
 
 ```
   -a, --account    account
+  -x, --curve      curve
   -h, --help       help for nkey
   -o, --operator   operator
   -S, --store      store in the keystore
@@ -23,6 +20,7 @@ nsc generate nkey [flags]
 ### Options inherited from parent commands
 
 ```
+  -H, --all-dirs string       sets --config-dir, --data-dir, and --keystore-dir to the same value
       --config-dir string     nsc config directory
       --data-dir string       nsc data store directory
   -i, --interactive           ask questions for various settings
@@ -36,4 +34,4 @@ nsc generate nkey [flags]
 
 * [nsc generate](nsc_generate.md)	 - Generate activations, creds, configs or nkeys
 
-###### Auto generated by spf13/cobra on 25-Feb-2022
+###### Auto generated by spf13/cobra on 2-Jan-2025
diff --git a/docs/nsc_generate_profile.md b/docs/nsc_generate_profile.md
new file mode 100644
index 0000000..0e9a807
--- /dev/null
+++ b/docs/nsc_generate_profile.md
@@ -0,0 +1,85 @@
+## nsc generate profile
+
+Generate a profile from nsc 'URL' that can be used by tooling
+
+```
+nsc generate profile [flags]
+```
+
+### Examples
+
+```
+profile nsc://operator
+nsc profile nsc://operator/account
+nsc profile nsc://operator/account/user
+nsc profile nsc://operator/account/user?names&seeds&keys
+nsc profile nsc://operator/account/user?operatorSeed&accountSeed&userSeed
+nsc profile nsc://operator/account/user?operatorKey&accountKey&userKey
+nsc profile nsc://operator?key&seed
+nsc profile nsc://operator/account?key&seed
+nsc profile nsc://operator/account/user?key&seed&name
+nsc profile nsc://operator/account/user?store=/a/.nsc/nats&keystore=/foo/.nkeys
+
+Output of the program looks like:
+{
+  "user_creds": "<filepath>",
+  "operator" : {
+     "service": "hostport"
+   }
+}
+The user_creds is printed if an user is specified
+Other options (as query string arguments):
+keystore=<dir> that specifies the location of the keystore
+
+store=<dir> that specifies a directory that contains the named operator
+
+[user|account|operator]Key - includes the public key for user, account, 
+operator, If no prefix (user/account/operator is provided, it targets 
+the last object in the configuration path)
+
+keys - includes the public keys for all entities (same as 
+userKey&accountKey&operatorKey)
+
+[user|account|operator]Seed=<optional public key> - include the seed for 
+user, account, operator, if an argument is provided, the seed for the 
+specified public key is provided - this allows targeting a signing key.
+If no prefix (user/account/operator is provided, it targets the last 
+object in the configuration path)
+
+seeds - includes the private keys for all entities (same as
+userSeed&accountSeed&operatorSeed)
+
+[user|account|operator]Name - includes the friendly name for the for 
+user, account, operator, If no prefix (user/account/operator is provided, 
+it targets the last object in the configuration path)
+
+names - includes the friendly names for all the entities (same as 
+userName&accountName&operatorName)
+		
+```
+
+### Options
+
+```
+  -h, --help                 help for profile
+  -o, --output-file string   output file, '--' is stdout (default "--")
+```
+
+### Options inherited from parent commands
+
+```
+  -H, --all-dirs string       sets --config-dir, --data-dir, and --keystore-dir to the same value
+      --config-dir string     nsc config directory
+      --data-dir string       nsc data store directory
+  -i, --interactive           ask questions for various settings
+      --keystore-dir string   nsc keystore directory
+  -K, --private-key string    Key used to sign. Can be specified as role (where applicable),
+                              public key (private portion is retrieved)
+                              or file path to a private key or private key 
+```
+
+### SEE ALSO
+
+* [nsc generate](nsc_generate.md)	 - Generate activations, creds, configs or nkeys
+
+###### Auto generated by spf13/cobra on 2-Jan-2025
diff --git a/docs/nsc_import.md b/docs/nsc_import.md
index b38f61c..02e3781 100644
--- a/docs/nsc_import.md
+++ b/docs/nsc_import.md
@@ -2,10 +2,6 @@
 
 Import assets such as nkeys
 
-### Synopsis
-
-Import assets such as nkeys
-
 ### Options
 
 ```
@@ -15,6 +11,7 @@ Import assets such as nkeys
 ### Options inherited from parent commands
 
 ```
+  -H, --all-dirs string       sets --config-dir, --data-dir, and --keystore-dir to the same value
       --config-dir string     nsc config directory
       --data-dir string       nsc data store directory
   -i, --interactive           ask questions for various settings
@@ -31,4 +28,4 @@ Import assets such as nkeys
 * [nsc import keys](nsc_import_keys.md)	 - Imports all nkeys found in a directory
 * [nsc import user](nsc_import_user.md)	 - Imports an user from a jwt or user and nkey from a creds file
 
-###### Auto generated by spf13/cobra on 25-Feb-2022
+###### Auto generated by spf13/cobra on 2-Jan-2025
diff --git a/docs/nsc_import_account.md b/docs/nsc_import_account.md
index 46fbe98..154a9c4 100644
--- a/docs/nsc_import_account.md
+++ b/docs/nsc_import_account.md
@@ -2,10 +2,6 @@
 
 Imports an account from a jwt file and resign with operator if self signed
 
-### Synopsis
-
-Imports an account from a jwt file and resign with operator if self signed
-
 ```
 nsc import account --file <account-jwt> [flags]
 ```
@@ -29,6 +25,7 @@ nsc import account --file <account-jwt>
 ### Options inherited from parent commands
 
 ```
+  -H, --all-dirs string       sets --config-dir, --data-dir, and --keystore-dir to the same value
       --config-dir string     nsc config directory
       --data-dir string       nsc data store directory
   -i, --interactive           ask questions for various settings
@@ -42,4 +39,4 @@ nsc import account --file <account-jwt>
 
 * [nsc import](nsc_import.md)	 - Import assets such as nkeys
 
-###### Auto generated by spf13/cobra on 25-Feb-2022
+###### Auto generated by spf13/cobra on 2-Jan-2025
diff --git a/docs/nsc_import_keys.md b/docs/nsc_import_keys.md
index fc8eafe..a960b90 100644
--- a/docs/nsc_import_keys.md
+++ b/docs/nsc_import_keys.md
@@ -14,7 +14,7 @@ nsc import keys [flags]
 
 ```
 nsc import keys --dir <path>
-nsc import keys --recursive --dir <path>
+nsc import keys --recurse --dir <path>
 
 ```
 
@@ -29,6 +29,7 @@ nsc import keys --recursive --dir <path>
 ### Options inherited from parent commands
 
 ```
+  -H, --all-dirs string       sets --config-dir, --data-dir, and --keystore-dir to the same value
       --config-dir string     nsc config directory
       --data-dir string       nsc data store directory
   -i, --interactive           ask questions for various settings
@@ -42,4 +43,4 @@ nsc import keys --recursive --dir <path>
 
 * [nsc import](nsc_import.md)	 - Import assets such as nkeys
 
-###### Auto generated by spf13/cobra on 25-Feb-2022
+###### Auto generated by spf13/cobra on 2-Jan-2025
diff --git a/docs/nsc_import_user.md b/docs/nsc_import_user.md
index d6071ce..2f91b2a 100644
--- a/docs/nsc_import_user.md
+++ b/docs/nsc_import_user.md
@@ -2,10 +2,6 @@
 
 Imports an user from a jwt or user and nkey from a creds file
 
-### Synopsis
-
-Imports an user from a jwt or user and nkey from a creds file
-
 ```
 nsc import user --file <user-jwt/user-creds> [flags]
 ```
@@ -28,6 +24,7 @@ nsc import user --file <account-jwt>
 ### Options inherited from parent commands
 
 ```
+  -H, --all-dirs string       sets --config-dir, --data-dir, and --keystore-dir to the same value
       --config-dir string     nsc config directory
       --data-dir string       nsc data store directory
   -i, --interactive           ask questions for various settings
@@ -41,4 +38,4 @@ nsc import user --file <account-jwt>
 
 * [nsc import](nsc_import.md)	 - Import assets such as nkeys
 
-###### Auto generated by spf13/cobra on 25-Feb-2022
+###### Auto generated by spf13/cobra on 2-Jan-2025
diff --git a/docs/nsc_init.md b/docs/nsc_init.md
index b61eef5..4303ee2 100644
--- a/docs/nsc_init.md
+++ b/docs/nsc_init.md
@@ -2,10 +2,6 @@
 
 Initialize an environment by creating an operator, account and user
 
-### Synopsis
-
-Initialize an environment by creating an operator, account and user
-
 ```
 nsc init [flags]
 ```
@@ -13,27 +9,23 @@ nsc init [flags]
 ### Options
 
 ```
-  -d, --dir string               directory where the operator directory will be created (default "/Users/synadia/.local/share/nats/nsc/stores")
+  -H, --all-dirs string          sets --config-dir, --data-dir, and --keystore-dir to the same value
+      --config-dir string        nsc config directory
+      --data-dir string          nsc data store directory
+  -d, --dir string               directory where the operator directory will be created (default "/Users/aricart/.local/share/nats/nsc/stores")
   -h, --help                     help for init
+  -i, --interactive              ask questions for various settings
+      --keystore-dir string      nsc keystore directory
   -n, --name string              name used for the operator, account and user
+  -K, --private-key string       Key used to sign. Can be specified as role (where applicable),
+                                 public key (private portion is retrieved)
+                                 or file path to a private key or private key 
   -o, --remote-operator string   remote well-known operator
   -u, --url string               operator account server url
 ```
 
-### Options inherited from parent commands
-
-```
-      --config-dir string     nsc config directory
-      --data-dir string       nsc data store directory
-  -i, --interactive           ask questions for various settings
-      --keystore-dir string   nsc keystore directory
-  -K, --private-key string    Key used to sign. Can be specified as role (where applicable),
-                              public key (private portion is retrieved)
-                              or file path to a private key or private key 
-```
-
 ### SEE ALSO
 
 * [nsc](nsc.md)	 - nsc creates NATS operators, accounts, users, and manage their permissions.
 
-###### Auto generated by spf13/cobra on 25-Feb-2022
+###### Auto generated by spf13/cobra on 2-Jan-2025
diff --git a/docs/nsc_keys.md b/docs/nsc_keys.md
index 70fb2ee..0374978 100644
--- a/docs/nsc_keys.md
+++ b/docs/nsc_keys.md
@@ -2,10 +2,6 @@
 
 Manage keys for operators, accounts, and users
 
-### Synopsis
-
-Manage keys for operators, accounts, and users
-
 ### Options
 
 ```
@@ -15,6 +11,7 @@ Manage keys for operators, accounts, and users
 ### Options inherited from parent commands
 
 ```
+  -H, --all-dirs string       sets --config-dir, --data-dir, and --keystore-dir to the same value
       --config-dir string     nsc config directory
       --data-dir string       nsc data store directory
   -i, --interactive           ask questions for various settings
@@ -29,4 +26,4 @@ Manage keys for operators, accounts, and users
 * [nsc](nsc.md)	 - nsc creates NATS operators, accounts, users, and manage their permissions.
 * [nsc keys migrate](nsc_keys_migrate.md)	 - migrates keystore to new layout, original keystore is preserved
 
-###### Auto generated by spf13/cobra on 25-Feb-2022
+###### Auto generated by spf13/cobra on 2-Jan-2025
diff --git a/docs/nsc_keys_migrate.md b/docs/nsc_keys_migrate.md
index 42f1d76..7325b22 100644
--- a/docs/nsc_keys_migrate.md
+++ b/docs/nsc_keys_migrate.md
@@ -2,10 +2,6 @@
 
 migrates keystore to new layout, original keystore is preserved
 
-### Synopsis
-
-migrates keystore to new layout, original keystore is preserved
-
 ```
 nsc keys migrate [flags]
 ```
@@ -19,6 +15,7 @@ nsc keys migrate [flags]
 ### Options inherited from parent commands
 
 ```
+  -H, --all-dirs string       sets --config-dir, --data-dir, and --keystore-dir to the same value
       --config-dir string     nsc config directory
       --data-dir string       nsc data store directory
   -i, --interactive           ask questions for various settings
@@ -32,4 +29,4 @@ nsc keys migrate [flags]
 
 * [nsc keys](nsc_keys.md)	 - Manage keys for operators, accounts, and users
 
-###### Auto generated by spf13/cobra on 25-Feb-2022
+###### Auto generated by spf13/cobra on 2-Jan-2025
diff --git a/docs/nsc_list.md b/docs/nsc_list.md
index 510adb7..e25ef54 100644
--- a/docs/nsc_list.md
+++ b/docs/nsc_list.md
@@ -2,10 +2,6 @@
 
 List assets such as accounts, imports, users
 
-### Synopsis
-
-List assets such as accounts, imports, users
-
 ### Options
 
 ```
@@ -15,6 +11,7 @@ List assets such as accounts, imports, users
 ### Options inherited from parent commands
 
 ```
+  -H, --all-dirs string       sets --config-dir, --data-dir, and --keystore-dir to the same value
       --config-dir string     nsc config directory
       --data-dir string       nsc data store directory
   -i, --interactive           ask questions for various settings
@@ -32,4 +29,4 @@ List assets such as accounts, imports, users
 * [nsc list operators](nsc_list_operators.md)	 - List operators
 * [nsc list users](nsc_list_users.md)	 - List users
 
-###### Auto generated by spf13/cobra on 25-Feb-2022
+###### Auto generated by spf13/cobra on 2-Jan-2025
diff --git a/docs/nsc_list_accounts.md b/docs/nsc_list_accounts.md
index 6cf72bb..b98fd57 100644
--- a/docs/nsc_list_accounts.md
+++ b/docs/nsc_list_accounts.md
@@ -2,10 +2,6 @@
 
 List accounts
 
-### Synopsis
-
-List accounts
-
 ```
 nsc list accounts [flags]
 ```
@@ -20,6 +16,7 @@ nsc list accounts [flags]
 ### Options inherited from parent commands
 
 ```
+  -H, --all-dirs string       sets --config-dir, --data-dir, and --keystore-dir to the same value
       --config-dir string     nsc config directory
       --data-dir string       nsc data store directory
   -i, --interactive           ask questions for various settings
@@ -33,4 +30,4 @@ nsc list accounts [flags]
 
 * [nsc list](nsc_list.md)	 - List assets such as accounts, imports, users
 
-###### Auto generated by spf13/cobra on 25-Feb-2022
+###### Auto generated by spf13/cobra on 2-Jan-2025
diff --git a/docs/nsc_list_keys.md b/docs/nsc_list_keys.md
index bce1b6b..f2b7ebc 100644
--- a/docs/nsc_list_keys.md
+++ b/docs/nsc_list_keys.md
@@ -42,6 +42,7 @@ nsc list keys --account A (changes the account context to the specified account)
       --account string   show specified account keys
   -a, --accounts         show account keys
   -A, --all              show operator, accounts and users
+  -x, --curve            show curve keys
   -f, --filter string    filter keys containing string
   -h, --help             help for keys
       --not-referenced   shows keys that are not referenced in the current operator context
@@ -54,6 +55,7 @@ nsc list keys --account A (changes the account context to the specified account)
 ### Options inherited from parent commands
 
 ```
+  -H, --all-dirs string       sets --config-dir, --data-dir, and --keystore-dir to the same value
       --config-dir string     nsc config directory
       --data-dir string       nsc data store directory
   -i, --interactive           ask questions for various settings
@@ -67,4 +69,4 @@ nsc list keys --account A (changes the account context to the specified account)
 
 * [nsc list](nsc_list.md)	 - List assets such as accounts, imports, users
 
-###### Auto generated by spf13/cobra on 25-Feb-2022
+###### Auto generated by spf13/cobra on 2-Jan-2025
diff --git a/docs/nsc_list_operators.md b/docs/nsc_list_operators.md
index fc04d8b..3b4500c 100644
--- a/docs/nsc_list_operators.md
+++ b/docs/nsc_list_operators.md
@@ -2,10 +2,6 @@
 
 List operators
 
-### Synopsis
-
-List operators
-
 ```
 nsc list operators [flags]
 ```
@@ -19,6 +15,7 @@ nsc list operators [flags]
 ### Options inherited from parent commands
 
 ```
+  -H, --all-dirs string       sets --config-dir, --data-dir, and --keystore-dir to the same value
       --config-dir string     nsc config directory
       --data-dir string       nsc data store directory
   -i, --interactive           ask questions for various settings
@@ -32,4 +29,4 @@ nsc list operators [flags]
 
 * [nsc list](nsc_list.md)	 - List assets such as accounts, imports, users
 
-###### Auto generated by spf13/cobra on 25-Feb-2022
+###### Auto generated by spf13/cobra on 2-Jan-2025
diff --git a/docs/nsc_list_users.md b/docs/nsc_list_users.md
index 632be1d..e0a653a 100644
--- a/docs/nsc_list_users.md
+++ b/docs/nsc_list_users.md
@@ -2,10 +2,6 @@
 
 List users
 
-### Synopsis
-
-List users
-
 ```
 nsc list users [flags]
 ```
@@ -21,6 +17,7 @@ nsc list users [flags]
 ### Options inherited from parent commands
 
 ```
+  -H, --all-dirs string       sets --config-dir, --data-dir, and --keystore-dir to the same value
       --config-dir string     nsc config directory
       --data-dir string       nsc data store directory
   -i, --interactive           ask questions for various settings
@@ -34,4 +31,4 @@ nsc list users [flags]
 
 * [nsc list](nsc_list.md)	 - List assets such as accounts, imports, users
 
-###### Auto generated by spf13/cobra on 25-Feb-2022
+###### Auto generated by spf13/cobra on 2-Jan-2025
diff --git a/docs/nsc_load.md b/docs/nsc_load.md
new file mode 100644
index 0000000..985de55
--- /dev/null
+++ b/docs/nsc_load.md
@@ -0,0 +1,36 @@
+## nsc load
+
+install entities for an operator, account and key
+
+```
+nsc load [flags]
+```
+
+### Options
+
+```
+  -h, --help             help for load
+      --profile string   Profile URL to initialize NSC and NATS CLI env
+      --seed string      Seed of the account used to create users
+      --url string       URL of the account server
+      --user string      Default username (default "default")
+```
+
+### Options inherited from parent commands
+
+```
+  -H, --all-dirs string       sets --config-dir, --data-dir, and --keystore-dir to the same value
+      --config-dir string     nsc config directory
+      --data-dir string       nsc data store directory
+  -i, --interactive           ask questions for various settings
+      --keystore-dir string   nsc keystore directory
+  -K, --private-key string    Key used to sign. Can be specified as role (where applicable),
+                              public key (private portion is retrieved)
+                              or file path to a private key or private key 
+```
+
+### SEE ALSO
+
+* [nsc](nsc.md)	 - nsc creates NATS operators, accounts, users, and manage their permissions.
+
+###### Auto generated by spf13/cobra on 2-Jan-2025
diff --git a/docs/nsc_pull.md b/docs/nsc_pull.md
index 42c91e8..60babf6 100644
--- a/docs/nsc_pull.md
+++ b/docs/nsc_pull.md
@@ -2,10 +2,6 @@
 
 Pull an operator or account jwt replacing the local jwt with the server's version
 
-### Synopsis
-
-Pull an operator or account jwt replacing the local jwt with the server's version
-
 ```
 nsc pull [flags]
 ```
@@ -24,6 +20,7 @@ nsc pull [flags]
 ### Options inherited from parent commands
 
 ```
+  -H, --all-dirs string       sets --config-dir, --data-dir, and --keystore-dir to the same value
       --config-dir string     nsc config directory
       --data-dir string       nsc data store directory
   -i, --interactive           ask questions for various settings
@@ -37,4 +34,4 @@ nsc pull [flags]
 
 * [nsc](nsc.md)	 - nsc creates NATS operators, accounts, users, and manage their permissions.
 
-###### Auto generated by spf13/cobra on 25-Feb-2022
+###### Auto generated by spf13/cobra on 2-Jan-2025
diff --git a/docs/nsc_push.md b/docs/nsc_push.md
index 0ff84c2..a25f067 100644
--- a/docs/nsc_push.md
+++ b/docs/nsc_push.md
@@ -2,10 +2,6 @@
 
 Push an account jwt to an Account JWT Server
 
-### Synopsis
-
-Push an account jwt to an Account JWT Server
-
 ```
 nsc push (currentAccount)
 push -a <accountName>
@@ -33,11 +29,13 @@ push
   -P, --prune                           prune all accounts not under the current operator. Only works with nats-resolver enabled nats-server. Mutually exclusive of account-removal/diff.
       --system-account string           System account for use with nats-resolver enabled nats-server. (Default is system account specified by operator)
       --system-user string              System account user for use with nats-resolver enabled nats-server. (Default to temporarily generated user)
+      --timeout int                     timeout in seconds [1-60] to wait for responses from the server (only applicable to nats-resolver configurations, and applies per operation) (default 1)
 ```
 
 ### Options inherited from parent commands
 
 ```
+  -H, --all-dirs string       sets --config-dir, --data-dir, and --keystore-dir to the same value
       --config-dir string     nsc config directory
       --data-dir string       nsc data store directory
   -i, --interactive           ask questions for various settings
@@ -51,4 +49,4 @@ push
 
 * [nsc](nsc.md)	 - nsc creates NATS operators, accounts, users, and manage their permissions.
 
-###### Auto generated by spf13/cobra on 25-Feb-2022
+###### Auto generated by spf13/cobra on 2-Jan-2025
diff --git a/docs/nsc_reissue.md b/docs/nsc_reissue.md
index dd4f1d5..abb8432 100644
--- a/docs/nsc_reissue.md
+++ b/docs/nsc_reissue.md
@@ -2,10 +2,6 @@
 
 Re-issue objects with a new identity key
 
-### Synopsis
-
-Re-issue objects with a new identity key
-
 ### Options
 
 ```
@@ -15,6 +11,7 @@ Re-issue objects with a new identity key
 ### Options inherited from parent commands
 
 ```
+  -H, --all-dirs string       sets --config-dir, --data-dir, and --keystore-dir to the same value
       --config-dir string     nsc config directory
       --data-dir string       nsc data store directory
   -i, --interactive           ask questions for various settings
@@ -27,6 +24,10 @@ Re-issue objects with a new identity key
 ### SEE ALSO
 
 * [nsc](nsc.md)	 - nsc creates NATS operators, accounts, users, and manage their permissions.
-* [nsc reissue operator](nsc_reissue_operator.md)	 - Re-issues the operator with a new identity and re-signs affected accounts
+* [nsc reissue operator](nsc_reissue_operator.md)	 - Re-issues the operator with a new identity and re-signs affected accounts.
+	When `--private-key` flag is provided with an operator seed, the identity
+	specified will be used for the operator and as the issuer for the accounts.
+	Note use of this command could create a disruption. Please backup your server
+	and nsc environment prior to use.
 
-###### Auto generated by spf13/cobra on 25-Feb-2022
+###### Auto generated by spf13/cobra on 2-Jan-2025
diff --git a/docs/nsc_reissue_operator.md b/docs/nsc_reissue_operator.md
index 16d0823..1158b23 100644
--- a/docs/nsc_reissue_operator.md
+++ b/docs/nsc_reissue_operator.md
@@ -1,10 +1,10 @@
 ## nsc reissue operator
 
-Re-issues the operator with a new identity and re-signs affected accounts
-
-### Synopsis
-
-Re-issues the operator with a new identity and re-signs affected accounts
+Re-issues the operator with a new identity and re-signs affected accounts.
+	When `--private-key` flag is provided with an operator seed, the identity
+	specified will be used for the operator and as the issuer for the accounts.
+	Note use of this command could create a disruption. Please backup your server
+	and nsc environment prior to use.
 
 ```
 nsc reissue operator [flags]
@@ -27,6 +27,7 @@ nsc reissue operator
 ### Options inherited from parent commands
 
 ```
+  -H, --all-dirs string       sets --config-dir, --data-dir, and --keystore-dir to the same value
       --config-dir string     nsc config directory
       --data-dir string       nsc data store directory
   -i, --interactive           ask questions for various settings
@@ -40,4 +41,4 @@ nsc reissue operator
 
 * [nsc reissue](nsc_reissue.md)	 - Re-issue objects with a new identity key
 
-###### Auto generated by spf13/cobra on 25-Feb-2022
+###### Auto generated by spf13/cobra on 2-Jan-2025
diff --git a/docs/nsc_revocations.md b/docs/nsc_revocations.md
index f125204..0403c83 100644
--- a/docs/nsc_revocations.md
+++ b/docs/nsc_revocations.md
@@ -2,10 +2,6 @@
 
 Manage revocation for users and activations from an account
 
-### Synopsis
-
-Manage revocation for users and activations from an account
-
 ### Options
 
 ```
@@ -15,6 +11,7 @@ Manage revocation for users and activations from an account
 ### Options inherited from parent commands
 
 ```
+  -H, --all-dirs string       sets --config-dir, --data-dir, and --keystore-dir to the same value
       --config-dir string     nsc config directory
       --data-dir string       nsc data store directory
   -i, --interactive           ask questions for various settings
@@ -34,4 +31,4 @@ Manage revocation for users and activations from an account
 * [nsc revocations list-users](nsc_revocations_list-users.md)	 - List users revoked in an account
 * [nsc revocations list_activations](nsc_revocations_list_activations.md)	 - List account revocations for an export
 
-###### Auto generated by spf13/cobra on 25-Feb-2022
+###### Auto generated by spf13/cobra on 2-Jan-2025
diff --git a/docs/nsc_revocations_add-user.md b/docs/nsc_revocations_add-user.md
index 9b5e45d..94bfcba 100644
--- a/docs/nsc_revocations_add-user.md
+++ b/docs/nsc_revocations_add-user.md
@@ -2,10 +2,6 @@
 
 Revoke a user
 
-### Synopsis
-
-Revoke a user
-
 ```
 nsc revocations add-user [flags]
 ```
@@ -23,6 +19,7 @@ nsc revocations add-user [flags]
 ### Options inherited from parent commands
 
 ```
+  -H, --all-dirs string       sets --config-dir, --data-dir, and --keystore-dir to the same value
       --config-dir string     nsc config directory
       --data-dir string       nsc data store directory
   -i, --interactive           ask questions for various settings
@@ -36,4 +33,4 @@ nsc revocations add-user [flags]
 
 * [nsc revocations](nsc_revocations.md)	 - Manage revocation for users and activations from an account
 
-###### Auto generated by spf13/cobra on 25-Feb-2022
+###### Auto generated by spf13/cobra on 2-Jan-2025
diff --git a/docs/nsc_revocations_add_activation.md b/docs/nsc_revocations_add_activation.md
index 313780a..3256b7f 100644
--- a/docs/nsc_revocations_add_activation.md
+++ b/docs/nsc_revocations_add_activation.md
@@ -2,10 +2,6 @@
 
 Revoke an accounts access to an export
 
-### Synopsis
-
-Revoke an accounts access to an export
-
 ```
 nsc revocations add_activation [flags]
 ```
@@ -24,6 +20,7 @@ nsc revocations add_activation [flags]
 ### Options inherited from parent commands
 
 ```
+  -H, --all-dirs string       sets --config-dir, --data-dir, and --keystore-dir to the same value
       --config-dir string     nsc config directory
       --data-dir string       nsc data store directory
   -i, --interactive           ask questions for various settings
@@ -37,4 +34,4 @@ nsc revocations add_activation [flags]
 
 * [nsc revocations](nsc_revocations.md)	 - Manage revocation for users and activations from an account
 
-###### Auto generated by spf13/cobra on 25-Feb-2022
+###### Auto generated by spf13/cobra on 2-Jan-2025
diff --git a/docs/nsc_revocations_delete-user.md b/docs/nsc_revocations_delete-user.md
index b000243..d7069fc 100644
--- a/docs/nsc_revocations_delete-user.md
+++ b/docs/nsc_revocations_delete-user.md
@@ -2,10 +2,6 @@
 
 Remove a user revocation
 
-### Synopsis
-
-Remove a user revocation
-
 ```
 nsc revocations delete-user [flags]
 ```
@@ -22,6 +18,7 @@ nsc revocations delete-user [flags]
 ### Options inherited from parent commands
 
 ```
+  -H, --all-dirs string       sets --config-dir, --data-dir, and --keystore-dir to the same value
       --config-dir string     nsc config directory
       --data-dir string       nsc data store directory
   -i, --interactive           ask questions for various settings
@@ -35,4 +32,4 @@ nsc revocations delete-user [flags]
 
 * [nsc revocations](nsc_revocations.md)	 - Manage revocation for users and activations from an account
 
-###### Auto generated by spf13/cobra on 25-Feb-2022
+###### Auto generated by spf13/cobra on 2-Jan-2025
diff --git a/docs/nsc_revocations_delete_activation.md b/docs/nsc_revocations_delete_activation.md
index b58fb73..cda153d 100644
--- a/docs/nsc_revocations_delete_activation.md
+++ b/docs/nsc_revocations_delete_activation.md
@@ -2,10 +2,6 @@
 
 Remove an account revocation from an export
 
-### Synopsis
-
-Remove an account revocation from an export
-
 ```
 nsc revocations delete_activation [flags]
 ```
@@ -23,6 +19,7 @@ nsc revocations delete_activation [flags]
 ### Options inherited from parent commands
 
 ```
+  -H, --all-dirs string       sets --config-dir, --data-dir, and --keystore-dir to the same value
       --config-dir string     nsc config directory
       --data-dir string       nsc data store directory
   -i, --interactive           ask questions for various settings
@@ -36,4 +33,4 @@ nsc revocations delete_activation [flags]
 
 * [nsc revocations](nsc_revocations.md)	 - Manage revocation for users and activations from an account
 
-###### Auto generated by spf13/cobra on 25-Feb-2022
+###### Auto generated by spf13/cobra on 2-Jan-2025
diff --git a/docs/nsc_revocations_list-users.md b/docs/nsc_revocations_list-users.md
index 2d9d9ac..918c685 100644
--- a/docs/nsc_revocations_list-users.md
+++ b/docs/nsc_revocations_list-users.md
@@ -2,10 +2,6 @@
 
 List users revoked in an account
 
-### Synopsis
-
-List users revoked in an account
-
 ```
 nsc revocations list-users [flags]
 ```
@@ -20,6 +16,7 @@ nsc revocations list-users [flags]
 ### Options inherited from parent commands
 
 ```
+  -H, --all-dirs string       sets --config-dir, --data-dir, and --keystore-dir to the same value
       --config-dir string     nsc config directory
       --data-dir string       nsc data store directory
   -i, --interactive           ask questions for various settings
@@ -33,4 +30,4 @@ nsc revocations list-users [flags]
 
 * [nsc revocations](nsc_revocations.md)	 - Manage revocation for users and activations from an account
 
-###### Auto generated by spf13/cobra on 25-Feb-2022
+###### Auto generated by spf13/cobra on 2-Jan-2025
diff --git a/docs/nsc_revocations_list_activations.md b/docs/nsc_revocations_list_activations.md
index 217041a..167d293 100644
--- a/docs/nsc_revocations_list_activations.md
+++ b/docs/nsc_revocations_list_activations.md
@@ -2,10 +2,6 @@
 
 List account revocations for an export
 
-### Synopsis
-
-List account revocations for an export
-
 ```
 nsc revocations list_activations [flags]
 ```
@@ -22,6 +18,7 @@ nsc revocations list_activations [flags]
 ### Options inherited from parent commands
 
 ```
+  -H, --all-dirs string       sets --config-dir, --data-dir, and --keystore-dir to the same value
       --config-dir string     nsc config directory
       --data-dir string       nsc data store directory
   -i, --interactive           ask questions for various settings
@@ -35,4 +32,4 @@ nsc revocations list_activations [flags]
 
 * [nsc revocations](nsc_revocations.md)	 - Manage revocation for users and activations from an account
 
-###### Auto generated by spf13/cobra on 25-Feb-2022
+###### Auto generated by spf13/cobra on 2-Jan-2025
diff --git a/docs/nsc_select.md b/docs/nsc_select.md
new file mode 100644
index 0000000..627c237
--- /dev/null
+++ b/docs/nsc_select.md
@@ -0,0 +1,30 @@
+## nsc select
+
+Set the current operator or account
+
+### Options
+
+```
+  -h, --help   help for select
+```
+
+### Options inherited from parent commands
+
+```
+  -H, --all-dirs string       sets --config-dir, --data-dir, and --keystore-dir to the same value
+      --config-dir string     nsc config directory
+      --data-dir string       nsc data store directory
+  -i, --interactive           ask questions for various settings
+      --keystore-dir string   nsc keystore directory
+  -K, --private-key string    Key used to sign. Can be specified as role (where applicable),
+                              public key (private portion is retrieved)
+                              or file path to a private key or private key 
+```
+
+### SEE ALSO
+
+* [nsc](nsc.md)	 - nsc creates NATS operators, accounts, users, and manage their permissions.
+* [nsc select account](nsc_select_account.md)	 - set the account
+* [nsc select operator](nsc_select_operator.md)	 - set the operator
+
+###### Auto generated by spf13/cobra on 2-Jan-2025
diff --git a/docs/nsc_select_account.md b/docs/nsc_select_account.md
new file mode 100644
index 0000000..f1bf67f
--- /dev/null
+++ b/docs/nsc_select_account.md
@@ -0,0 +1,32 @@
+## nsc select account
+
+set the account
+
+```
+nsc select account [flags]
+```
+
+### Options
+
+```
+  -h, --help   help for account
+```
+
+### Options inherited from parent commands
+
+```
+  -H, --all-dirs string       sets --config-dir, --data-dir, and --keystore-dir to the same value
+      --config-dir string     nsc config directory
+      --data-dir string       nsc data store directory
+  -i, --interactive           ask questions for various settings
+      --keystore-dir string   nsc keystore directory
+  -K, --private-key string    Key used to sign. Can be specified as role (where applicable),
+                              public key (private portion is retrieved)
+                              or file path to a private key or private key 
+```
+
+### SEE ALSO
+
+* [nsc select](nsc_select.md)	 - Set the current operator or account
+
+###### Auto generated by spf13/cobra on 2-Jan-2025
diff --git a/docs/nsc_select_operator.md b/docs/nsc_select_operator.md
new file mode 100644
index 0000000..bc2a253
--- /dev/null
+++ b/docs/nsc_select_operator.md
@@ -0,0 +1,32 @@
+## nsc select operator
+
+set the operator
+
+```
+nsc select operator [flags]
+```
+
+### Options
+
+```
+  -h, --help   help for operator
+```
+
+### Options inherited from parent commands
+
+```
+  -H, --all-dirs string       sets --config-dir, --data-dir, and --keystore-dir to the same value
+      --config-dir string     nsc config directory
+      --data-dir string       nsc data store directory
+  -i, --interactive           ask questions for various settings
+      --keystore-dir string   nsc keystore directory
+  -K, --private-key string    Key used to sign. Can be specified as role (where applicable),
+                              public key (private portion is retrieved)
+                              or file path to a private key or private key 
+```
+
+### SEE ALSO
+
+* [nsc select](nsc_select.md)	 - Set the current operator or account
+
+###### Auto generated by spf13/cobra on 2-Jan-2025
diff --git a/docs/nsc_tool.md b/docs/nsc_tool.md
index 349f3ce..545d106 100644
--- a/docs/nsc_tool.md
+++ b/docs/nsc_tool.md
@@ -2,10 +2,6 @@
 
 NATS tools: pub, sub, req, rep, rtt
 
-### Synopsis
-
-NATS tools: pub, sub, req, rep, rtt
-
 ### Options
 
 ```
@@ -16,6 +12,7 @@ NATS tools: pub, sub, req, rep, rtt
 ### Options inherited from parent commands
 
 ```
+  -H, --all-dirs string       sets --config-dir, --data-dir, and --keystore-dir to the same value
       --config-dir string     nsc config directory
       --data-dir string       nsc data store directory
   -i, --interactive           ask questions for various settings
@@ -34,4 +31,4 @@ NATS tools: pub, sub, req, rep, rtt
 * [nsc tool rtt](nsc_tool_rtt.md)	 - Calculate the round trip time to the server
 * [nsc tool sub](nsc_tool_sub.md)	 - Subscribe to a subject on a NATS account
 
-###### Auto generated by spf13/cobra on 25-Feb-2022
+###### Auto generated by spf13/cobra on 2-Jan-2025
diff --git a/docs/nsc_tool_pub.md b/docs/nsc_tool_pub.md
index 00b6646..0f66534 100644
--- a/docs/nsc_tool_pub.md
+++ b/docs/nsc_tool_pub.md
@@ -2,10 +2,6 @@
 
 Publish to a subject from a NATS account
 
-### Synopsis
-
-Publish to a subject from a NATS account
-
 ```
 nsc tool pub [flags]
 ```
@@ -27,6 +23,7 @@ nsc tool pub <subject> <opt_payload>
 ### Options inherited from parent commands
 
 ```
+  -H, --all-dirs string       sets --config-dir, --data-dir, and --keystore-dir to the same value
       --config-dir string     nsc config directory
       --data-dir string       nsc data store directory
   -i, --interactive           ask questions for various settings
@@ -41,4 +38,4 @@ nsc tool pub <subject> <opt_payload>
 
 * [nsc tool](nsc_tool.md)	 - NATS tools: pub, sub, req, rep, rtt
 
-###### Auto generated by spf13/cobra on 25-Feb-2022
+###### Auto generated by spf13/cobra on 2-Jan-2025
diff --git a/docs/nsc_tool_reply.md b/docs/nsc_tool_reply.md
index efc1c28..d873106 100644
--- a/docs/nsc_tool_reply.md
+++ b/docs/nsc_tool_reply.md
@@ -2,10 +2,6 @@
 
 Reply to requests on a subject on a NATS account
 
-### Synopsis
-
-Reply to requests on a subject on a NATS account
-
 ```
 nsc tool reply [flags]
 ```
@@ -30,6 +26,7 @@ nsc tool reply --queue <name> subject <opt_reply>
 ### Options inherited from parent commands
 
 ```
+  -H, --all-dirs string       sets --config-dir, --data-dir, and --keystore-dir to the same value
       --config-dir string     nsc config directory
       --data-dir string       nsc data store directory
   -i, --interactive           ask questions for various settings
@@ -44,4 +41,4 @@ nsc tool reply --queue <name> subject <opt_reply>
 
 * [nsc tool](nsc_tool.md)	 - NATS tools: pub, sub, req, rep, rtt
 
-###### Auto generated by spf13/cobra on 25-Feb-2022
+###### Auto generated by spf13/cobra on 2-Jan-2025
diff --git a/docs/nsc_tool_req.md b/docs/nsc_tool_req.md
index 14e5dbe..e97e48c 100644
--- a/docs/nsc_tool_req.md
+++ b/docs/nsc_tool_req.md
@@ -2,10 +2,6 @@
 
 Send a request to a subject on a NATS account
 
-### Synopsis
-
-Send a request to a subject on a NATS account
-
 ```
 nsc tool req [flags]
 ```
@@ -27,6 +23,7 @@ ngs tool req <subject> <opt_payload>
 ### Options inherited from parent commands
 
 ```
+  -H, --all-dirs string       sets --config-dir, --data-dir, and --keystore-dir to the same value
       --config-dir string     nsc config directory
       --data-dir string       nsc data store directory
   -i, --interactive           ask questions for various settings
@@ -41,4 +38,4 @@ ngs tool req <subject> <opt_payload>
 
 * [nsc tool](nsc_tool.md)	 - NATS tools: pub, sub, req, rep, rtt
 
-###### Auto generated by spf13/cobra on 25-Feb-2022
+###### Auto generated by spf13/cobra on 2-Jan-2025
diff --git a/docs/nsc_tool_rtt.md b/docs/nsc_tool_rtt.md
index f7a4891..2f2cb9c 100644
--- a/docs/nsc_tool_rtt.md
+++ b/docs/nsc_tool_rtt.md
@@ -2,10 +2,6 @@
 
 Calculate the round trip time to the server
 
-### Synopsis
-
-Calculate the round trip time to the server
-
 ```
 nsc tool rtt [flags]
 ```
@@ -27,6 +23,7 @@ nsc tool rtt
 ### Options inherited from parent commands
 
 ```
+  -H, --all-dirs string       sets --config-dir, --data-dir, and --keystore-dir to the same value
       --config-dir string     nsc config directory
       --data-dir string       nsc data store directory
   -i, --interactive           ask questions for various settings
@@ -41,4 +38,4 @@ nsc tool rtt
 
 * [nsc tool](nsc_tool.md)	 - NATS tools: pub, sub, req, rep, rtt
 
-###### Auto generated by spf13/cobra on 25-Feb-2022
+###### Auto generated by spf13/cobra on 2-Jan-2025
diff --git a/docs/nsc_tool_sub.md b/docs/nsc_tool_sub.md
index b8a5d40..ae66d3c 100644
--- a/docs/nsc_tool_sub.md
+++ b/docs/nsc_tool_sub.md
@@ -2,10 +2,6 @@
 
 Subscribe to a subject on a NATS account
 
-### Synopsis
-
-Subscribe to a subject on a NATS account
-
 ```
 nsc tool sub [flags]
 ```
@@ -30,6 +26,7 @@ nsc tool --queue <name> subject
 ### Options inherited from parent commands
 
 ```
+  -H, --all-dirs string       sets --config-dir, --data-dir, and --keystore-dir to the same value
       --config-dir string     nsc config directory
       --data-dir string       nsc data store directory
   -i, --interactive           ask questions for various settings
@@ -44,4 +41,4 @@ nsc tool --queue <name> subject
 
 * [nsc tool](nsc_tool.md)	 - NATS tools: pub, sub, req, rep, rtt
 
-###### Auto generated by spf13/cobra on 25-Feb-2022
+###### Auto generated by spf13/cobra on 2-Jan-2025
diff --git a/docs/nsc_update.md b/docs/nsc_update.md
index fdf6bb3..98132be 100644
--- a/docs/nsc_update.md
+++ b/docs/nsc_update.md
@@ -2,10 +2,6 @@
 
 Update this tool to latest version
 
-### Synopsis
-
-Update this tool to latest version
-
 ```
 nsc update [flags]
 ```
@@ -26,6 +22,7 @@ nsc update
 ### Options inherited from parent commands
 
 ```
+  -H, --all-dirs string       sets --config-dir, --data-dir, and --keystore-dir to the same value
       --config-dir string     nsc config directory
       --data-dir string       nsc data store directory
   -i, --interactive           ask questions for various settings
@@ -39,4 +36,4 @@ nsc update
 
 * [nsc](nsc.md)	 - nsc creates NATS operators, accounts, users, and manage their permissions.
 
-###### Auto generated by spf13/cobra on 25-Feb-2022
+###### Auto generated by spf13/cobra on 2-Jan-2025
diff --git a/docs/nsc_validate.md b/docs/nsc_validate.md
index 1c16138..4cc6ad2 100644
--- a/docs/nsc_validate.md
+++ b/docs/nsc_validate.md
@@ -2,10 +2,6 @@
 
 Validate an operator, account(s), and users
 
-### Synopsis
-
-Validate an operator, account(s), and users
-
 ```
 nsc validate (current operator/current account/account users)
 validate -a <accountName> (current operator/<accountName>/account users)
@@ -31,6 +27,7 @@ validate
 ### Options inherited from parent commands
 
 ```
+  -H, --all-dirs string       sets --config-dir, --data-dir, and --keystore-dir to the same value
       --config-dir string     nsc config directory
       --data-dir string       nsc data store directory
   -i, --interactive           ask questions for various settings
@@ -44,4 +41,4 @@ validate
 
 * [nsc](nsc.md)	 - nsc creates NATS operators, accounts, users, and manage their permissions.
 
-###### Auto generated by spf13/cobra on 25-Feb-2022
+###### Auto generated by spf13/cobra on 2-Jan-2025
diff --git a/go.mod b/go.mod
index d3f9499..ff42d70 100644
--- a/go.mod
+++ b/go.mod
@@ -13,7 +13,7 @@ require (
 	github.com/nats-io/jsm.go v0.1.2
 	github.com/nats-io/jwt/v2 v2.7.3
 	github.com/nats-io/nats-server/v2 v2.10.18
-	github.com/nats-io/nats.go v1.37.0
+	github.com/nats-io/nats.go v1.38.0
 	github.com/nats-io/nkeys v0.4.9
 	github.com/nats-io/nuid v1.0.1
 	github.com/rhysd/go-github-selfupdate v1.2.3
@@ -26,7 +26,7 @@ require (
 
 require (
 	github.com/AlecAivazis/survey/v2 v2.3.7 // indirect
-	github.com/cpuguy83/go-md2man/v2 v2.0.5 // indirect
+	github.com/cpuguy83/go-md2man/v2 v2.0.6 // indirect
 	github.com/davecgh/go-spew v1.1.1 // indirect
 	github.com/fatih/color v1.18.0 // indirect
 	github.com/google/go-github/v30 v30.1.0 // indirect
@@ -46,7 +46,7 @@ require (
 	github.com/tcnksm/go-gitconfig v0.1.2 // indirect
 	github.com/ulikunitz/xz v0.5.12 // indirect
 	golang.org/x/crypto v0.31.0 // indirect
-	golang.org/x/net v0.32.0 // indirect
+	golang.org/x/net v0.33.0 // indirect
 	golang.org/x/oauth2 v0.24.0 // indirect
 	golang.org/x/sys v0.28.0 // indirect
 	golang.org/x/term v0.27.0 // indirect
diff --git a/go.sum b/go.sum
index 0bde7cd..897408f 100644
--- a/go.sum
+++ b/go.sum
@@ -9,8 +9,8 @@ github.com/blang/semver v3.5.1+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnweb
 github.com/briandowns/spinner v1.23.1 h1:t5fDPmScwUjozhDj4FA46p5acZWIPXYE30qW2Ptu650=
 github.com/briandowns/spinner v1.23.1/go.mod h1:LaZeM4wm2Ywy6vO571mvhQNRcWfRUnXOs0RcKV0wYKM=
 github.com/cpuguy83/go-md2man/v2 v2.0.4/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o=
-github.com/cpuguy83/go-md2man/v2 v2.0.5 h1:ZtcqGrnekaHpVLArFSe4HK5DoKx1T0rq2DwVB0alcyc=
-github.com/cpuguy83/go-md2man/v2 v2.0.5/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o=
+github.com/cpuguy83/go-md2man/v2 v2.0.6 h1:XJtiaUW6dEEqVuZiMTn1ldk455QWwEIsMIJlo5vtkx0=
+github.com/cpuguy83/go-md2man/v2 v2.0.6/go.mod h1:oOW0eioCTA6cOiMLiUPZOpcVxMig6NIQQ7OS05n1F4g=
 github.com/creack/pty v1.1.17 h1:QeVUsEDNrLBW4tMgZHvxy18sKtr6VI492kBhUfhDJNI=
 github.com/creack/pty v1.1.17/go.mod h1:MOBLtS5ELjhRRrroQr9kyvTxUAFNvYEK993ew/Vr4O4=
 github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
@@ -74,8 +74,8 @@ github.com/nats-io/jwt/v2 v2.7.3 h1:6bNPK+FXgBeAqdj4cYQ0F8ViHRbi7woQLq4W29nUAzE=
 github.com/nats-io/jwt/v2 v2.7.3/go.mod h1:GvkcbHhKquj3pkioy5put1wvPxs78UlZ7D/pY+BgZk4=
 github.com/nats-io/nats-server/v2 v2.10.18 h1:tRdZmBuWKVAFYtayqlBB2BuCHNGAQPvoQIXOKwU3WSM=
 github.com/nats-io/nats-server/v2 v2.10.18/go.mod h1:97Qyg7YydD8blKlR8yBsUlPlWyZKjA7Bp5cl3MUE9K8=
-github.com/nats-io/nats.go v1.37.0 h1:07rauXbVnnJvv1gfIyghFEo6lUcYRY0WXc3x7x0vUxE=
-github.com/nats-io/nats.go v1.37.0/go.mod h1:Ubdu4Nh9exXdSz0RVWRFBbRfrbSxOYd26oF0wkWclB8=
+github.com/nats-io/nats.go v1.38.0 h1:A7P+g7Wjp4/NWqDOOP/K6hfhr54DvdDQUznt5JFg9XA=
+github.com/nats-io/nats.go v1.38.0/go.mod h1:IGUM++TwokGnXPs82/wCuiHS02/aKrdYUQkU8If6yjw=
 github.com/nats-io/nkeys v0.4.9 h1:qe9Faq2Gxwi6RZnZMXfmGMZkg3afLLOtrU+gDZJ35b0=
 github.com/nats-io/nkeys v0.4.9/go.mod h1:jcMqs+FLG+W5YO36OX6wFIFcmpdAns+w1Wm6D3I/evE=
 github.com/nats-io/nuid v1.0.1 h1:5iA8DT8V7q8WK2EScv2padNa/rTESc1KdnPw4TC2paw=
@@ -121,8 +121,8 @@ golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn
 golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
 golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
 golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
-golang.org/x/net v0.32.0 h1:ZqPmj8Kzc+Y6e0+skZsuACbx+wzMgo5MQsJh9Qd6aYI=
-golang.org/x/net v0.32.0/go.mod h1:CwU0IoeOlnQQWJ6ioyFrfRuomB8GKF6KbYXZVyeXNfs=
+golang.org/x/net v0.33.0 h1:74SYHlV8BIgHIFC/LrYkOGIwL19eTYXQ5wc6TBuO36I=
+golang.org/x/net v0.33.0/go.mod h1:HXLR5J+9DxmrqMwG9qjGCxZ+zKXxBru04zlTvWlWuN4=
 golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
 golang.org/x/oauth2 v0.0.0-20181106182150-f42d05182288/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
 golang.org/x/oauth2 v0.24.0 h1:KTBBxWqUa0ykRPLtV69rRto9TLXcqYkeswu48x/gvNE=


Test patch:
diff --git a/cmd/accountusercontextparams_test.go b/cmd/accountusercontextparams_test.go
new file mode 100644
index 0000000..26afa4a
--- /dev/null
+++ b/cmd/accountusercontextparams_test.go
@@ -0,0 +1,66 @@
+package cmd
+
+import (
+	"github.com/nats-io/cliprompts/v2"
+	"github.com/nats-io/nsc/v2/cmd/store"
+	"github.com/spf13/cobra"
+	"github.com/stretchr/testify/require"
+	"testing"
+)
+
+type tp struct {
+	AccountUserContextParams
+}
+
+func (p *tp) SetDefaults(ctx ActionCtx) error {
+	return p.AccountUserContextParams.SetDefaults(ctx)
+}
+
+func (p *tp) Validate(ctx ActionCtx) error {
+	return p.AccountUserContextParams.Validate(ctx)
+}
+
+func (p *tp) Load(ctx ActionCtx) error {
+	return nil
+}
+
+func (p *tp) Run(ctx ActionCtx) (store.Status, error) {
+	return nil, nil
+}
+
+func (p *tp) PreInteractive(ctx ActionCtx) error {
+	return p.AccountUserContextParams.Edit(ctx)
+}
+
+func (p *tp) PostInteractive(ctx ActionCtx) error {
+	return nil
+}
+
+func Test_AccountUserContextParams(t *testing.T) {
+	ts := NewTestStore(t, "O")
+	defer ts.Done(t)
+
+	ts.AddAccount(t, "A")
+	ts.AddUser(t, "A", "a")
+	ts.AddAccount(t, "B")
+	ts.AddUser(t, "B", "b")
+
+	var params tp
+	cmd := &cobra.Command{
+		Use:          "ucp",
+		SilenceUsage: true,
+
+		RunE: func(cmd *cobra.Command, args []string) error {
+			return RunAction(cmd, args, &params)
+		},
+	}
+
+	cliprompts.LogFn = t.Log
+	// A, a
+	inputs := []interface{}{0, 0}
+
+	_, _, err := ExecuteInteractiveCmd(cmd, inputs)
+	require.NoError(t, err)
+	require.Equal(t, "A", params.AccountContextParams.Name)
+	require.Equal(t, "a", params.UserContextParams.Name)
+}
diff --git a/cmd/deleteimport_test.go b/cmd/deleteimport_test.go
index 9a967b5..7b11b40 100644
--- a/cmd/deleteimport_test.go
+++ b/cmd/deleteimport_test.go
@@ -31,8 +31,8 @@ func Test_DeleteImport(t *testing.T) {
 	ts.AddExport(t, "A", jwt.Stream, "bar", 0, false)
 
 	ts.AddAccount(t, "B")
-	ts.AddImport(t, "A", "foo", "B")
-	ts.AddImport(t, "A", "bar", "B")
+	ts.AddImport(t, "A", jwt.Stream, "foo", "B")
+	ts.AddImport(t, "A", jwt.Stream, "bar", "B")
 
 	tests := CmdTests{
 		{createDeleteImportCmd(), []string{"delete", "import", "--account", "A"}, nil, []string{"account \"A\" doesn't have imports"}, true},
@@ -51,7 +51,7 @@ func Test_DeleteImportAccountRequired(t *testing.T) {
 	ts.AddAccount(t, "A")
 	ts.AddExport(t, "A", jwt.Stream, "foo", 0, false)
 	ts.AddAccount(t, "B")
-	ts.AddImport(t, "A", "foo", "B")
+	ts.AddImport(t, "A", jwt.Stream, "foo", "B")
 
 	GetConfig().SetAccount("")
 	_, _, err := ExecuteCmd(createDeleteImportCmd(), "--subject", "A")
@@ -68,8 +68,8 @@ func Test_DeleteImportInteractive(t *testing.T) {
 	ts.AddExport(t, "A", jwt.Stream, "bar", 0, false)
 
 	ts.AddAccount(t, "B")
-	ts.AddImport(t, "A", "foo", "B")
-	ts.AddImport(t, "A", "bar", "B")
+	ts.AddImport(t, "A", jwt.Stream, "foo", "B")
+	ts.AddImport(t, "A", jwt.Stream, "bar", "B")
 
 	input := []interface{}{1, 0, 0}
 	cmd := createDeleteImportCmd()
diff --git a/cmd/describeaccount_test.go b/cmd/describeaccount_test.go
index 21ec296..804ab46 100644
--- a/cmd/describeaccount_test.go
+++ b/cmd/describeaccount_test.go
@@ -18,11 +18,13 @@ package cmd
 import (
 	"encoding/json"
 	"fmt"
+	"github.com/nats-io/nkeys"
 	"os"
 	"path/filepath"
 	"runtime"
 	"strings"
 	"testing"
+	"time"
 
 	"github.com/nats-io/jwt/v2"
 	"github.com/stretchr/testify/require"
@@ -309,3 +311,87 @@ func TestDescribeAccount_Exports(t *testing.T) {
 	require.Contains(t, out, "| Account Token Position |")
 	require.Contains(t, out, "foo.bar.*.> | 3")
 }
+
+func TestDescribeAccountMore(t *testing.T) {
+	if runtime.GOOS == "windows" {
+		t.Skip("running in windows - looking at output hangs")
+	}
+	ts := NewTestStore(t, "O")
+	defer ts.Done(t)
+	ts.AddAccount(t, "A")
+	ac, err := ts.Store.ReadAccountClaim("A")
+	require.NoError(t, err)
+	ac.Description = "hello"
+	ac.InfoURL = "https://example.com"
+	_, signingKey, _ := CreateAccountKey(t)
+	ac.SigningKeys.Add(signingKey)
+
+	_, issuer, _ := CreateAccountKey(t)
+	scope := jwt.NewUserScope()
+	scope.Key = issuer
+	scope.Role = "nothing"
+	scope.Description = "no permissions"
+	scope.Template = jwt.UserPermissionLimits{
+		Permissions: jwt.Permissions{
+			Sub: jwt.Permission{Deny: []string{">"}},
+			Pub: jwt.Permission{Deny: []string{">"}},
+		},
+	}
+	ac.SigningKeys.AddScopedSigner(scope)
+
+	ac.Limits.JetStreamLimits = jwt.JetStreamLimits{DiskStorage: -1, MemoryStorage: -1}
+	ac.Limits.LeafNodeConn = 1
+
+	_, user, _ := CreateUserKey(t)
+	ac.Revocations = jwt.RevocationList{}
+	ac.Revocations.Revoke(user, time.Now())
+
+	ac.Trace = &jwt.MsgTrace{
+		Destination: "foo",
+		Sampling:    100,
+	}
+
+	ekp, err := nkeys.CreateUser()
+	require.NoError(t, err)
+	a, err := ekp.PublicKey()
+	require.NoError(t, err)
+	ac.Imports.Add(&jwt.Import{
+		Name:         "hello",
+		Subject:      "bar.>",
+		LocalSubject: "fromA.>",
+		Type:         jwt.Stream,
+		AllowTrace:   true,
+		Share:        true,
+		Account:      a,
+	})
+
+	ac.Mappings = make(map[jwt.Subject][]jwt.WeightedMapping)
+	ac.Mappings["mapfoo"] = []jwt.WeightedMapping{jwt.WeightedMapping{Subject: "map.>", Weight: 20, Cluster: "a"}}
+
+	token, err := ac.Encode(ts.OperatorKey)
+	require.NoError(t, err)
+	_, err = ts.Store.StoreClaim([]byte(token))
+	require.NoError(t, err)
+
+	out, _, err := ExecuteCmd(rootCmd, "describe", "account", "-n", "A")
+	require.NoError(t, err)
+
+	out = StripMultipleSpaces(out)
+	t.Log(out)
+	require.Contains(t, out, "| Description | hello")
+	require.Contains(t, out, "| Info Url | https://example.com")
+	// order of the key may be unexpected, just find the key
+	require.Contains(t, out, signingKey)
+	require.Contains(t, out, "| Max Disk Storage | Unlimited")
+	require.Contains(t, out, "| Max Mem Storage | Unlimited")
+	require.Contains(t, out, "| Max Leaf Node Connections | 1")
+	require.Contains(t, out, "| Revocations | 1")
+	require.Contains(t, out, "| Subject | foo")
+	require.Contains(t, out, "| Sampling | 100%")
+	require.Contains(t, out, "| hello | Stream | bar.> | fromA.>")
+	require.Contains(t, out, "| mapfoo | map.> | 20")
+
+	require.Contains(t, out, "| Key | "+issuer)
+	require.Contains(t, out, "| Role | nothing")
+	require.Contains(t, out, "| Description | no permissions")
+}
diff --git a/cmd/describeuser_test.go b/cmd/describeuser_test.go
index 2ad8317..f8b4dbf 100644
--- a/cmd/describeuser_test.go
+++ b/cmd/describeuser_test.go
@@ -24,7 +24,6 @@ import (
 	"testing"
 
 	"github.com/nats-io/jwt/v2"
-
 	"github.com/stretchr/testify/require"
 )
 
diff --git a/cmd/fixenv_test.go b/cmd/fixenv_test.go
index 16a7899..62d33c6 100644
--- a/cmd/fixenv_test.go
+++ b/cmd/fixenv_test.go
@@ -17,13 +17,12 @@ package cmd
 
 import (
 	"fmt"
-	"path/filepath"
-	"testing"
-	"time"
-
 	"github.com/nats-io/jwt/v2"
 	"github.com/nats-io/nsc/v2/cmd/store"
 	"github.com/stretchr/testify/require"
+	"path/filepath"
+	"testing"
+	"time"
 )
 
 func Test_FixRequiresInArg(t *testing.T) {
@@ -62,13 +61,6 @@ func Test_FixBasics(t *testing.T) {
 	require.NoError(t, err)
 	require.NoError(t, Write(filepath.Join(in, "o.jwt"), []byte(otok)))
 
-	// and another with a tag
-	oc.Tags.Add("test")
-	time.Sleep(time.Second)
-	otok2, err := oc.Encode(okp)
-	require.NoError(t, err)
-	require.NoError(t, Write(filepath.Join(in, "o2.jwt"), []byte(otok2)))
-
 	ask, apk, akp := CreateAccountKey(t)
 	require.NoError(t, Write(filepath.Join(in, "apk.nk"), ask))
 	ac := jwt.NewAccountClaims(apk)
@@ -85,8 +77,35 @@ func Test_FixBasics(t *testing.T) {
 	require.NoError(t, err)
 	require.NoError(t, Write(filepath.Join(in, "u.jwt"), []byte(utok)))
 
+	usk2, upk2, _ := CreateUserKey(t)
+	uc2 := jwt.NewUserClaims(upk2)
+	uc2.Name = "U2"
+	u2tok, err := uc2.Encode(akp)
+	require.NoError(t, err)
+	creds, err := jwt.FormatUserConfig(u2tok, usk2)
+	require.NoError(t, err)
+	require.NoError(t, Write(filepath.Join(in, "u2.creds"), creds))
+
+	// and copy of operator with a tag (and newer date)
+	time.Sleep(time.Second)
+
+	oc.Tags.Add("test")
+	otok2, err := oc.Encode(okp)
+	require.NoError(t, err)
+	require.NoError(t, Write(filepath.Join(in, "o2.jwt"), []byte(otok2)))
+
+	ac.Tags.Add("test")
+	atok, err = ac.Encode(okp)
+	require.NoError(t, err)
+	require.NoError(t, Write(filepath.Join(in, "a2.jwt"), []byte(atok)))
+
+	uc.Tags.Add("test")
+	utok, err = uc.Encode(akp)
+	require.NoError(t, err)
+	require.NoError(t, Write(filepath.Join(in, "u2.jwt"), []byte(utok)))
+
 	ofp := filepath.Join(ts.Dir, "out")
-	_, _, err = ExecuteCmd(createFixCmd(), "--in", in, "--out", ofp)
+	_, _, err = ExecuteCmd(createFixCmd(), "--creds", "--in", in, "--out", ofp)
 	require.NoError(t, err)
 
 	s, err := store.LoadStore(filepath.Join(ofp, "operators", "O"))
@@ -102,11 +121,17 @@ func Test_FixBasics(t *testing.T) {
 	require.NoError(t, err)
 	require.Equal(t, apk, aac.Subject)
 	require.Equal(t, "A", aac.Name)
+	require.True(t, aac.Tags.Contains("test"))
 
 	uuc, err := s.ReadUserClaim("A", "U")
 	require.NoError(t, err)
 	require.Equal(t, upk, uuc.Subject)
 	require.Equal(t, "U", uuc.Name)
+	require.True(t, uuc.Tags.Contains("test"))
+
+	uuc2, err := s.ReadUserClaim("A", "U2")
+	require.NoError(t, err)
+	require.Equal(t, upk2, uuc2.Subject)
 
 	okf := filepath.Join(ofp, "keys", "keys", opk[:1], opk[1:3], fmt.Sprintf("%s.nk", opk))
 	require.FileExists(t, okf)
diff --git a/cmd/generatediagram_test.go b/cmd/generatediagram_test.go
new file mode 100644
index 0000000..9a8800c
--- /dev/null
+++ b/cmd/generatediagram_test.go
@@ -0,0 +1,81 @@
+package cmd
+
+import (
+	"runtime"
+	"testing"
+
+	"github.com/nats-io/jwt/v2"
+	"github.com/stretchr/testify/require"
+)
+
+func buildDiagreamStore(t *testing.T, ts *TestStore) {
+	ts.AddAccount(t, "A")
+	ts.AddExport(t, "A", jwt.Stream, "a", 0, true)
+	ts.AddExport(t, "A", jwt.Service, "q", 0, true)
+	ac, err := ts.Store.ReadAccountClaim("A")
+	require.NoError(t, err)
+	_, pub, _ := CreateAccountKey(t)
+	ac.SigningKeys.Add(pub)
+
+	ac.DefaultPermissions.Pub.Allow.Add("a.hello")
+	ac.DefaultPermissions.Pub.Deny.Add("a.bye")
+	ac.DefaultPermissions.Sub.Allow.Add("a.hi")
+	ac.DefaultPermissions.Sub.Allow.Add("a.goodbye")
+
+	token, err := ac.Encode(ts.OperatorKey)
+	require.NoError(t, err)
+	require.NoError(t, ts.Store.StoreRaw([]byte(token)))
+
+	ts.AddAccount(t, "B")
+	ts.AddImport(t, "A", jwt.Stream, "a", "B")
+	ts.AddImport(t, "A", jwt.Service, "q", "B")
+	ts.AddUser(t, "B", "b")
+
+	uc, err := ts.Store.ReadUserClaim("B", "b")
+	require.NoError(t, err)
+	uc.Permissions.Pub.Allow.Add("a.>")
+	uc.Permissions.Pub.Deny.Add("b.>")
+	uc.Permissions.Sub.Allow.Add("a.>")
+	uc.Permissions.Sub.Deny.Add("b.>")
+	token, err = uc.Encode(ts.GetAccountKey(t, "B"))
+	require.NoError(t, err)
+	require.NoError(t, ts.Store.StoreRaw([]byte(token)))
+}
+
+func Test_ObjectDiagram(t *testing.T) {
+	if runtime.GOOS == "windows" {
+		t.Skip("running in windows - looking at output hangs")
+	}
+	ts := NewTestStore(t, "O")
+	defer ts.Done(t)
+	buildDiagreamStore(t, ts)
+
+	stdOut, _, err := ExecuteCmd(createObjectDiagramCmd(), "--show-keys", "--users", "--detail")
+	require.NoError(t, err)
+	require.Contains(t, stdOut, "@startuml")
+	require.Contains(t, stdOut, "object \"O\" as")
+	require.Contains(t, stdOut, "object \"A\" as")
+	require.Contains(t, stdOut, "object \"B\" as")
+	require.Contains(t, stdOut, "object \"b\" as")
+	require.Contains(t, stdOut, "@enduml")
+}
+
+func Test_ComponentDiagram(t *testing.T) {
+	if runtime.GOOS == "windows" {
+		t.Skip("running in windows - looking at output hangs")
+	}
+	ts := NewTestStore(t, "O")
+	defer ts.Done(t)
+	buildDiagreamStore(t, ts)
+
+	stdOut, _, err := ExecuteCmd(createComponentDiagreamCmd(), "--detail")
+	require.NoError(t, err)
+
+	require.Contains(t, stdOut, "@startuml")
+	require.Contains(t, stdOut, "Component Diagram of Accounts - Operator O")
+	require.Contains(t, stdOut, "component [A]")
+	require.Contains(t, stdOut, "component [B]")
+	require.Contains(t, stdOut, "\"a\" << public stream >>")
+	require.Contains(t, stdOut, "\"q\" << public service >>")
+	require.Contains(t, stdOut, "@enduml")
+}
diff --git a/cmd/keys_test.go b/cmd/keys_test.go
index d004b3b..7d129e8 100644
--- a/cmd/keys_test.go
+++ b/cmd/keys_test.go
@@ -19,6 +19,7 @@ import (
 	"fmt"
 	"os"
 	"path/filepath"
+	"runtime"
 	"testing"
 
 	"github.com/nats-io/nkeys"
@@ -98,6 +99,18 @@ func Test_HasOldStructure(t *testing.T) {
 	store.KeyStorePath = old
 }
 
+func Test_NoMigration(t *testing.T) {
+	if runtime.GOOS == "windows" {
+		t.Skip("running in windows - looking at output hangs")
+	}
+	ts := NewTestStore(t, "O")
+	defer ts.Done(t)
+
+	_, stdErr, err := ExecuteCmd(createMigrateKeysCmd())
+	require.NoError(t, err)
+	require.Contains(t, stdErr, "does not need migration")
+}
+
 func Test_MigrateKeys(t *testing.T) {
 	ts := NewEmptyStore(t)
 	defer ts.Done(t)
@@ -125,9 +138,8 @@ func Test_MigrateKeys(t *testing.T) {
 	require.NoError(t, err)
 	require.True(t, needsUpdate)
 
-	old, err := store.Migrate()
+	_, _, err = ExecuteCmd(createMigrateKeysCmd())
 	require.NoError(t, err)
-	require.DirExists(t, old)
 
 	// directory for keystore has a "keys" and "creds"
 	keysDir := filepath.Join(ks, "keys")
diff --git a/cmd/nkeyconfigbuilder_test.go b/cmd/nkeyconfigbuilder_test.go
index ed9d1c8..2c80698 100644
--- a/cmd/nkeyconfigbuilder_test.go
+++ b/cmd/nkeyconfigbuilder_test.go
@@ -133,8 +133,8 @@ func Test_NkeyResolverMapsImporter(t *testing.T) {
 
 	ts.AddAccount(t, "B")
 
-	ts.AddImport(t, "A", "service.b", "B")
-	ts.AddImport(t, "A", "stream.a", "B")
+	ts.AddImport(t, "A", jwt.Service, "service.b", "B")
+	ts.AddImport(t, "A", jwt.Stream, "stream.a", "B")
 
 	builder := NewNKeyConfigBuilder()
 
diff --git a/cmd/rtttool_test.go b/cmd/rtttool_test.go
new file mode 100644
index 0000000..78ae457
--- /dev/null
+++ b/cmd/rtttool_test.go
@@ -0,0 +1,51 @@
+package cmd
+
+import (
+	"github.com/nats-io/nats-server/v2/server"
+	"github.com/stretchr/testify/require"
+	"path/filepath"
+	"runtime"
+	"testing"
+	"time"
+)
+
+func Test_RttTool(t *testing.T) {
+	if runtime.GOOS == "windows" {
+		t.Skip("running in windows - looking at output hangs")
+	}
+	ts := NewTestStore(t, "O")
+	defer ts.Done(t)
+
+	ts.AddAccount(t, "SYS")
+
+	oc, err := ts.Store.ReadOperatorClaim()
+	require.NoError(t, err)
+	oc.SystemAccount = ts.GetAccountPublicKey(t, "SYS")
+	oc.OperatorServiceURLs.Add("nats://127.0.0.1:4222")
+	token, err := oc.Encode(ts.OperatorKey)
+	require.NoError(t, err)
+	require.NoError(t, ts.Store.StoreRaw([]byte(token)))
+
+	ts.AddAccount(t, "A")
+	ts.AddUser(t, "A", "a")
+
+	serverconf := filepath.Join(ts.Dir, "server.conf")
+	_, _, err = ExecuteCmd(createServerConfigCmd(), "--mem-resolver", "--config-file", serverconf)
+	require.NoError(t, err)
+
+	var opts server.Options
+	require.NoError(t, opts.ProcessConfigFile(serverconf))
+
+	s, err := server.NewServer(&opts)
+	require.NoError(t, err)
+
+	go s.Start()
+	if !s.ReadyForConnections(10 * time.Second) {
+		t.Fatal("Unable to start NATS Server in Go Routine")
+	}
+	defer s.Shutdown()
+
+	_, stdErr, err := ExecuteCmd(createToolRTTCmd(), "--account", "A", "--user", "a")
+	require.NoError(t, err)
+	require.Contains(t, stdErr, "round trip time to [nats://127.0.0.1:4222]")
+}
diff --git a/cmd/test_test.go b/cmd/test_test.go
new file mode 100644
index 0000000..fec377d
--- /dev/null
+++ b/cmd/test_test.go
@@ -0,0 +1,45 @@
+package cmd
+
+import (
+	"github.com/stretchr/testify/require"
+	"path/filepath"
+	"runtime"
+	"testing"
+)
+
+func Test_FlagTable(t *testing.T) {
+	if runtime.GOOS == "windows" {
+		t.Skip("running in windows - looking at output hangs")
+	}
+	ts := NewTestStore(t, "O")
+	defer ts.Done(t)
+
+	stdout, _, err := ExecuteCmd(GetRootCmd(), "test", "flags")
+	require.NoError(t, err)
+	require.Contains(t, stdout, "nsc validate")
+	require.Contains(t, stdout, "nsc add account")
+}
+
+func Test_WhoFlagTable(t *testing.T) {
+	if runtime.GOOS == "windows" {
+		t.Skip("running in windows - looking at output hangs")
+	}
+	ts := NewTestStore(t, "O")
+	defer ts.Done(t)
+
+	stdout, _, err := ExecuteCmd(GetRootCmd(), "test", "whoflag", "allow-pub")
+	require.NoError(t, err)
+	require.Contains(t, stdout, "nsc add user")
+}
+
+func Test_Doc(t *testing.T) {
+	ts := NewTestStore(t, "O")
+	defer ts.Done(t)
+
+	docs := filepath.Join(ts.Dir, "doc")
+	_, _, err := ExecuteCmd(GetRootCmd(), "test", "doc", docs)
+	require.NoError(t, err)
+	require.DirExists(t, docs)
+	require.FileExists(t, filepath.Join(docs, "nsc_add.md"))
+	require.FileExists(t, filepath.Join(docs, "nsc_validate.md"))
+}
diff --git a/cmd/util_test.go b/cmd/util_test.go
index 1115591..43c1090 100644
--- a/cmd/util_test.go
+++ b/cmd/util_test.go
@@ -340,8 +340,11 @@ func (ts *TestStore) ImportRequiresToken(t *testing.T, srcAccount string, subjec
 	return false
 }
 
-func (ts *TestStore) AddImport(t *testing.T, srcAccount string, subject string, targetAccountName string) {
+func (ts *TestStore) AddImport(t *testing.T, srcAccount string, kind jwt.ExportType, subject string, targetAccountName string) {
 	flags := []string{"--account", targetAccountName}
+	if kind == jwt.Service {
+		flags = append(flags, "--service")
+	}
 
 	if ts.ImportRequiresToken(t, srcAccount, subject) {
 		token := ts.GenerateActivation(t, srcAccount, subject, targetAccountName)
@@ -455,6 +458,11 @@ func StripTableDecorations(s string) string {
 	return re.ReplaceAllString(s, " ")
 }
 
+func StripMultipleSpaces(s string) string {
+	re := regexp.MustCompile(` +`)
+	return re.ReplaceAllString(s, " ")
+}
+
 func (ts *TestStore) GetAccountKey(t *testing.T, name string) nkeys.KeyPair {
 	ac, err := ts.Store.ReadAccountClaim(name)
 	require.NoError(t, err)