diff --git a/cli/ssh.go b/cli/ssh.go
index a55cd437ffe3d..38fde2c8a155d 100644
--- a/cli/ssh.go
+++ b/cli/ssh.go
@@ -28,6 +28,7 @@ import (
"cdr.dev/slog"
"cdr.dev/slog/sloggers/sloghuman"
+ "github.com/coder/coder/v2/agent/agentssh"
"github.com/coder/coder/v2/cli/cliui"
"github.com/coder/coder/v2/cli/cliutil"
"github.com/coder/coder/v2/coderd/autobuild/notify"
@@ -58,6 +59,7 @@ func (r *RootCmd) ssh() *serpent.Command {
remoteForwards []string
env []string
disableAutostart bool
+ noUsageTracking bool
)
client := new(codersdk.Client)
cmd := &serpent.Command{
@@ -408,12 +410,27 @@ func (r *RootCmd) ssh() *serpent.Command {
return xerrors.Errorf("start shell: %w", err)
}
- // track workspace usage while connection is open
- closeUsage := client.UpdateWorkspaceUsageWithBodyContext(ctx, workspace.ID, codersdk.PostWorkspaceUsageRequest{
- AgentID: workspaceAgent.ID,
- AppName: codersdk.UsageAppNameSSH,
- })
- defer closeUsage()
+ if !noUsageTracking {
+ // check env for magic variable to determine the session type
+ appName := codersdk.UsageAppNameSSH
+ for _, kv := range parsedEnv {
+ if kv[0] == agentssh.MagicSessionTypeEnvironmentVariable {
+ switch kv[1] {
+ case agentssh.MagicSessionTypeJetBrains:
+ appName = codersdk.UsageAppNameJetbrains
+ case agentssh.MagicSessionTypeVSCode:
+ appName = codersdk.UsageAppNameVscode
+ }
+ }
+ }
+
+ // track workspace usage while connection is open
+ closeUsage := client.UpdateWorkspaceUsageWithBodyContext(ctx, workspace.ID, codersdk.PostWorkspaceUsageRequest{
+ AgentID: workspaceAgent.ID,
+ AppName: appName,
+ })
+ defer closeUsage()
+ }
// Put cancel at the top of the defer stack to initiate
// shutdown of services.
@@ -517,6 +534,12 @@ func (r *RootCmd) ssh() *serpent.Command {
Value: serpent.StringArrayOf(&env),
},
sshDisableAutostartOption(serpent.BoolOf(&disableAutostart)),
+ {
+ Flag: "no-usage-tracking",
+ Description: "Disables tracking of workspace usage.",
+ Env: "CODER_SSH_NO_USAGE_TRACKING",
+ Value: serpent.BoolOf(&noUsageTracking),
+ },
}
return cmd
}
diff --git a/cli/testdata/coder_ssh_--help.golden b/cli/testdata/coder_ssh_--help.golden
index 80aaa3c204fda..153ca20911173 100644
--- a/cli/testdata/coder_ssh_--help.golden
+++ b/cli/testdata/coder_ssh_--help.golden
@@ -30,6 +30,9 @@ OPTIONS:
-l, --log-dir string, $CODER_SSH_LOG_DIR
Specify the directory containing SSH diagnostic log files.
+ --no-usage-tracking bool, $CODER_SSH_NO_USAGE_TRACKING
+ Disables tracking of workspace usage.
+
--no-wait bool, $CODER_SSH_NO_WAIT
Enter workspace immediately after the agent has connected. This is the
default if the template has configured the agent startup script
diff --git a/docs/cli/ssh.md b/docs/cli/ssh.md
index d2110628feec4..6e6f040b9119c 100644
--- a/docs/cli/ssh.md
+++ b/docs/cli/ssh.md
@@ -113,3 +113,12 @@ Set environment variable(s) for session (key1=value1,key2=value2,...).
| Default | false
|
Disable starting the workspace automatically when connecting via SSH.
+
+### --no-usage-tracking
+
+| | |
+| ----------- | ----------------------------------------- |
+| Type | bool
|
+| Environment | $CODER_SSH_NO_USAGE_TRACKING
|
+
+Disables tracking of workspace usage.
Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.
Alternative Proxies: