Executing cd in a bash function called by subshell causes extraneous output
There seems to be something odd going on as cd is not defined to behave as you are seeing it. Evidence suggests it's definition is being over-ridden somewhere.

It is possible that your cd command is aliased somewhere.  The alias command with no arguments will display a list of aliased commands on most shells. A workaround for an aliased command is to preface the command with a backslash (\cd). That quotes the first letter of the command and defeats any alias processing by the shell.

It is also possible that it is a shell function.  declare -f should list the defined functions, at least in bash, and you can see if cd is being defined as a function.

With luck, your which command may support short-cut ways to do these checks.   Check out this on-line man page for how one implementation of which can be used to check functions and aliases, then see if your which operates in a similar manner.