Participating in a Session

Overview | Navigating | Editing | Advanced

CodeTogether lets you join a session from a browser or an IDE (Eclipse, IntelliJ and VS Code). Your experience will vary slightly depending on how you join the session.

When joining from an IDE:

      • You get the same look and feel of your IDE—including, key bindings, workbench layout and general behavior.
      • Language smarts come from the host IDE, regardless of the plugins/extensions you have installed or what your IDE is inherently capable of. Your experience as a participant will differ from using the same IDE as a host. While you have access to the entire project shared by the host (minus files intentionally hidden from the session), the files and libraries are not downloaded to your system. Files are fetched on demand and only the files being actively edited are local to your system. This should help you understand which features in the host IDE you can expect to work.
      • You can use the Project/Resource views and the Problems views; however, no other views will provide meaningful support for shared projects.

When joining from a browser:

      • You can select your preferred IDE theme and key bindings for a more familiar experience in the browser.
      • Language smarts come from the host IDE.

Because language smarts always come from the host, content assist suggestions, validation, quick fixes and navigation support are all delivered by the host IDE.

Note: You can code alone or with a group. Refer to Section Basics for details.

Editing in a Session

In addition to basic editing capabilities like undo, redo, and clipboard access, the following code features are available.

Content Assist

Press the appropriate key binding (typically Ctrl+Space) to invoke content assist. On accepting a proposal, you can press Tab to jump from one parameter stop to the next as you key in the parameters to a constructor or method.

Quick Fixes

When the cursor is within an error squiggly, a quick fix bulb appears if one or more fixes are available. Click the bulb and choose the desired fix action to make the recommended changes to your code.

Rename Refactoring

Use your IDE’s rename refactoring shortcut or menu actions to initiate this refactoring action. As long as the host supports it, this will result in the entity in question being correctly renamed across the workspace.

Note: Additional refactoring actions will be added in subsequent releases.


Errors from the host workspace appear in all participant sessions. This includes errors from files that are not currently open or being edited, as long as the host has validated those files. Errors typically appear and disappear as you type, as validation takes place on the host and the markers are transferred over to the participants. To see a list of all errors, you can open the Problems view (View > Problems) from where you can easily navigate to the referenced files.

Java Class Creation

Create a new file with a java extension within a Java source folder, and CodeTogether will create a minimally scaffolded Java class, ready for further code.


You can format the entire file by using the Format Document context menu action. If code is selected, only the selected code is formatted.

Advanced Features

CodeTogether includes a number of features that help you get the most of your collaborative coding session. 

Shared Console

Console output on the host is visible to all participants, beginning with version 3.1. To see the output as soon as it is emitted on the host, access the appropriate view: the Console view in Eclipse, the Run view in IntelliJ or the Output view in VS Code or a browser.

Shared Terminal

Terminals opened on the host are automatically shared in the session, and are accessible by all participants. These terminals will be added to the respective IDEs Terminal views, or a dedicated terminal tab for each shared terminal in the browser.

  • Participants can get write access to terminals if they are signed in to a Teams account, and permission is explicitly granted by the host.
  • The host can stop sharing a terminal, this will immediately close it on all clients. The host cannot re-share this terminal in the same session.
  • For shared terminals, participants will only see terminal activity that occurs after they join the session. They will not have access to terminal content that existed before they joined.

Shared terminal in a browser

Shared Server

Since version 4.1, if on a Teams and On-Premises plan, CodeTogether automatically detect servers running on the host system and display them under the Shared Servers node in the CodeTogether view. This includes servers that are running independently, external to the IDE. You can also add a server manually by using the Add Server action on the Shared Servers node. The host can choose to start and stop sharing servers anytime during a session. If a previously shared server is stopped, it will disappear from the participants CodeTogether view, and become inaccessible to them.

On the participant side, servers shared by the host appear under the Shared Servers node. Simply double click or use the Connect Server action to connect to the server. CodeTogether attempts to make the server available at the same port at which it is running on the host, but will choose the next available port if that is not available locally. The node will then change to display the address at which the server is locally available. Double click or use the Disconnect Server action to disconnect from the server and free the local port.

Note: Use this capability to share more than just web applications. Share a database server, a remote debug session, web sockets, etc.

Run Launches and Unit Tests

Guests can remotely run tests and analyze the results. They can even write tests, allowing test-driven development (TDD) in a remote environment. JUnit, TestNG, PHPUnit and pytest are all supported. Guests can also execute run configurations from the host IDE, remotely launching applications with the ability to stop and monitor the invocations. By default, all guests can run remote launches and unit tests. If you have a Teams plan, you have the option to limit access to this feature.

See Running Tests and Launches for details.