diff --git a/cmd/jiri/profile.go b/cmd/jiri/profile.go
index a472a09..aa78d3f 100644
--- a/cmd/jiri/profile.go
+++ b/cmd/jiri/profile.go
@@ -18,5 +18,5 @@
 
 func init() {
 	profilescmdline.RegisterReaderCommands(cmdProfile, jiri.ProfilesDBDir)
-	profilescmdline.RegisterManagementCommands(cmdProfile, "", jiri.ProfilesDBDir, jiri.ProfilesRootDir)
+	profilescmdline.RegisterManagementCommands(cmdProfile, true, "", jiri.ProfilesDBDir, jiri.ProfilesRootDir)
 }
diff --git a/profile.go b/profile.go
index a472a09..aa78d3f 100644
--- a/profile.go
+++ b/profile.go
@@ -18,5 +18,5 @@
 
 func init() {
 	profilescmdline.RegisterReaderCommands(cmdProfile, jiri.ProfilesDBDir)
-	profilescmdline.RegisterManagementCommands(cmdProfile, "", jiri.ProfilesDBDir, jiri.ProfilesRootDir)
+	profilescmdline.RegisterManagementCommands(cmdProfile, true, "", jiri.ProfilesDBDir, jiri.ProfilesRootDir)
 }
diff --git a/profiles/.api b/profiles/.api
index 88be259..b106611 100644
--- a/profiles/.api
+++ b/profiles/.api
@@ -15,7 +15,6 @@
 pkg profiles, func NewTarget(string, ...string) (Target, error)
 pkg profiles, func NewVersionInfo(string, map[string]interface{}, string) *VersionInfo
 pkg profiles, func QualifiedProfileName(string, string) string
-pkg profiles, func RegisterProfilesFlag(*flag.FlagSet, *string)
 pkg profiles, func RegisterTargetAndEnvFlags(*flag.FlagSet, *Target)
 pkg profiles, func RegisterTargetFlag(*flag.FlagSet, *Target)
 pkg profiles, func RemoveTarget(Targets, *Target) Targets
diff --git a/profiles/flags.go b/profiles/flags.go
index 53c1449..f426171 100644
--- a/profiles/flags.go
+++ b/profiles/flags.go
@@ -19,11 +19,6 @@
 	flags.Var(&target.commandLineEnv, "env", target.commandLineEnv.Usage())
 }
 
-// RegisterProfilesFlag registers the --profiles flag
-func RegisterProfilesFlag(flags *flag.FlagSet, profiles *string) {
-	flags.StringVar(profiles, "profiles", "base,jiri", "a comma separated list of profiles to use")
-}
-
 // RegisterTargetFlag registers the commonly used --target flag with
 // the supplied FlagSet.
 func RegisterTargetFlag(flags *flag.FlagSet, target *Target) {
diff --git a/profiles/profilescmdline/.api b/profiles/profilescmdline/.api
index 9d99303..a435258 100644
--- a/profiles/profilescmdline/.api
+++ b/profiles/profilescmdline/.api
@@ -1,8 +1,7 @@
-pkg profilescmdline, const DefaultProfiles ideal-string
 pkg profilescmdline, func HelpMsg() string
 pkg profilescmdline, func IsFlagSet(*flag.FlagSet, string) bool
 pkg profilescmdline, func RegisterDBPathFlag(*flag.FlagSet, *string, string)
-pkg profilescmdline, func RegisterManagementCommands(*cmdline.Command, string, string, string)
+pkg profilescmdline, func RegisterManagementCommands(*cmdline.Command, bool, string, string, string)
 pkg profilescmdline, func RegisterMergePoliciesFlag(*flag.FlagSet, *profilesreader.MergePolicies)
 pkg profilescmdline, func RegisterProfilesFlag(*flag.FlagSet, *string)
 pkg profilescmdline, func RegisterReaderCommands(*cmdline.Command, string)
diff --git a/profiles/profilescmdline/internal/i1/i1.go b/profiles/profilescmdline/internal/i1/i1.go
index 1b3c1bc..4b1cc3e 100644
--- a/profiles/profilescmdline/internal/i1/i1.go
+++ b/profiles/profilescmdline/internal/i1/i1.go
@@ -28,7 +28,7 @@
 
 func main() {
 	profilesmanager.Register(example.New("i1", "eg"))
-	profilescmdline.RegisterManagementCommands(commandLineDriver, "i1", jiri.ProfilesDBDir, jiri.ProfilesRootDir)
+	profilescmdline.RegisterManagementCommands(commandLineDriver, true, "i1", jiri.ProfilesDBDir, jiri.ProfilesRootDir)
 	tool.InitializeRunFlags(&commandLineDriver.Flags)
 	cmdline.Main(commandLineDriver)
 }
diff --git a/profiles/profilescmdline/internal/i2/i2.go b/profiles/profilescmdline/internal/i2/i2.go
index efb16be..70fd08b 100644
--- a/profiles/profilescmdline/internal/i2/i2.go
+++ b/profiles/profilescmdline/internal/i2/i2.go
@@ -29,7 +29,7 @@
 
 func main() {
 	profilesmanager.Register(example.New("i2", "eg"))
-	profilescmdline.RegisterManagementCommands(commandLineDriver, "i2", jiri.ProfilesDBDir, jiri.ProfilesRootDir)
+	profilescmdline.RegisterManagementCommands(commandLineDriver, true, "i2", jiri.ProfilesDBDir, jiri.ProfilesRootDir)
 	tool.InitializeRunFlags(&commandLineDriver.Flags)
 	cmdline.Main(commandLineDriver)
 }
diff --git a/profiles/profilescmdline/manager_cmdline.go b/profiles/profilescmdline/manager_cmdline.go
index 110f9a3..95e8f59 100644
--- a/profiles/profilescmdline/manager_cmdline.go
+++ b/profiles/profilescmdline/manager_cmdline.go
@@ -254,11 +254,12 @@
 	updateFlags      updateFlagValues
 	availableFlags   availableFlagValues
 	profileInstaller string
+	runSubcommands   bool
 )
 
 // RegisterManagementCommands registers the management subcommands:
 // uninstall, install, update and cleanup.
-func RegisterManagementCommands(parent *cmdline.Command, installer, defaultDBPath, defaultProfilesPath string) {
+func RegisterManagementCommands(parent *cmdline.Command, useSubcommands bool, installer, defaultDBPath, defaultProfilesPath string) {
 	cmdInstall := newCmdInstall()
 	cmdUninstall := newCmdUninstall()
 	cmdUpdate := newCmdUpdate()
@@ -271,9 +272,13 @@
 	initAvailableCommand(&cmdAvailable.Flags, installer, defaultDBPath, defaultProfilesPath)
 	parent.Children = append(parent.Children, cmdInstall, cmdUninstall, cmdUpdate, cmdCleanup, cmdAvailable)
 	profileInstaller = installer
+	runSubcommands = useSubcommands
 }
 
 func findProfileSubcommands(jirix *jiri.X) []string {
+	if !runSubcommands {
+		return []string{}
+	}
 	fi, err := os.Stat(filepath.Join(jirix.Root, jiri.ProfilesDBDir))
 	if err == nil && fi.IsDir() {
 		env := cmdline.EnvFromOS()
diff --git a/profiles/profilescmdline/manager_test.go b/profiles/profilescmdline/manager_test.go
index 26c05c8..38cd5d7 100644
--- a/profiles/profilescmdline/manager_test.go
+++ b/profiles/profilescmdline/manager_test.go
@@ -30,7 +30,7 @@
 func TestManagerArgs(t *testing.T) {
 	profilescmdline.Reset()
 	p := parent
-	profilescmdline.RegisterManagementCommands(&p, "", "", jiri.ProfilesRootDir)
+	profilescmdline.RegisterManagementCommands(&p, false, "", "", jiri.ProfilesRootDir)
 	if got, want := len(p.Children), 5; got != want {
 		t.Errorf("got %v, want %v", got, want)
 	}
diff --git a/profiles/profilescmdline/reader_cmdline.go b/profiles/profilescmdline/reader_cmdline.go
index e273510..e5436f3 100644
--- a/profiles/profilescmdline/reader_cmdline.go
+++ b/profiles/profilescmdline/reader_cmdline.go
@@ -12,6 +12,7 @@
 	"bytes"
 	"flag"
 	"fmt"
+	"os"
 	"path/filepath"
 	"strings"
 	"text/template"
@@ -24,8 +25,6 @@
 	"v.io/x/lib/textutil"
 )
 
-const DefaultProfiles = "base,jiri"
-
 // IsFlagSet returns true if the specified flag has been set on
 // the command line.
 func IsFlagSet(fs *flag.FlagSet, name string) bool {
@@ -133,7 +132,17 @@
 
 // RegisterProfilesFlag registers the --profiles flag
 func RegisterProfilesFlag(flags *flag.FlagSet, profiles *string) {
-	flags.StringVar(profiles, "profiles", DefaultProfiles, "a comma separated list of profiles to use")
+	// TODO(cnicolaou): delete this when the new profiles are in use.
+	root := jiri.FindRoot()
+	fi, err := os.Stat(filepath.Join(root, jiri.ProfilesDBDir))
+	defaultProfiles := "base,jiri"
+	if err == nil && fi.IsDir() {
+		// TODO(cnicolaou): we need a better way of setting the default profiles,
+		// ideally via the profiles db, or some other config. Provide a command
+		// line tool for setting the default profiles.
+		defaultProfiles = "v23:base,jiri"
+	}
+	flags.StringVar(profiles, "profiles", defaultProfiles, "a comma separated list of profiles to use")
 }
 
 // RegisterMergePoliciesFlag registers the --merge-policies flag
