Answers frequently asked questions about GitHub Copilot app modernization.
FAQ
What's the product scope of the GitHub Copilot app modernization?
We recognize that the migration process is always complex and intertwined, with different layers of app ecosystems. At this time, we're limiting the migration scope to Java backend apps. We support projects that are built with Maven or Gradle. For information about key product capabilities, see the GitHub Copilot app modernization overview.
Will GitHub Copilot app modernization be open sourced in the future?
We currently have no plans to open source GitHub Copilot app modernization.
What GitHub Copilot license plan do I need to use GitHub Copilot app modernization?
GitHub Copilot app modernization is available to Pro, Pro+, Business, or Enterprise plan.
How is GitHub Copilot app modernization billed?
GitHub Copilot app modernization is a feature of GitHub Copilot, and shares the same subscription billing model as GitHub Copilot. App modernization tasks consume premium requests, with each subscription plan offering a monthly allowance of premium requests. Exceeding the plan limit requires a plan upgrade or extra purchase of premium requests.
In addition to Java, I also need to migrate apps written in other languages. Is there a plan for GitHub Copilot app modernization to go beyond Java?
Currently, GitHub Copilot app modernization is focused on assisting with Java and .NET applications. However, we're actively collecting requirements and feedback from customers regarding the need to support other languages.
Does GitHub Copilot app modernization store my source code?
No. GitHub Copilot app modernization uses GitHub Copilot in the same way you use it to modify code, which doesn't retain code snippets beyond the immediate session. We don't collect, transmit, or store your custom tasks either.
Telemetry metrics are collected and analyzed to track feature usage and effectiveness.
For more information, see the Microsoft Privacy Statement.
What kind of applications did you use to evaluate GitHub Copilot app modernization?
We tested GitHub Copilot app modernization on hundreds of open-source repositories to ensure build, consistency, and unit tests pass after the modernization process. We also worked extensively with customers during the Technical Preview phase. Input from users is used to improve the product experience. You can submit feedback using this link.
What frameworks is GitHub Copilot app modernization optimized for in upgrade scenarios?
Although GitHub Copilot app modernization focuses on upgrading Java runtimes, it also optimizes upgrades for the following frameworks:
- Spring Boot up to version 3.5.
- Java EE - Javax to Jakarta EE, up to Jakarta EE 10.
- Legacy Spring Framework up to version 6.2+.
- JUnit.
- Various third-party dependencies.
For more information, see Customize the Java project upgrade plan.
What versions of Java are supported for upgrade?
We currently support the following Java Development Kit (JDK) versions:
- JDK 8
- JDK 11
- JDK 17
- JDK 21
The minimum required JDK version for a project is JDK 8, and you can upgrade the project to use any version up to JDK 21.
What types of Java projects are supported?
Currently, only the following project types are supported:
- Maven projects (including Maven Wrapper)
- Gradle projects (Gradle Wrapper only, version 5+)
Kotlin DSL-based Gradle projects aren't supported.
What are the limitations of Java upgrades?
Currently, the extension has the following functional limitations:
- The extension exclusively supports Java upgrades and doesn't cater to other programming languages.
- It works only with Java projects built using Maven and Gradle.
- Only Git repositories are supported. Other version control systems aren't compatible.
- The extension can't guarantee that the changes it proposes are optimal or considered best practices.
We recommend using the following best practices with this tool:
- Run the extension only on projects that meet the specified characteristics as previously described.
- Complete thorough code reviews before merging extension output into production branches.
- Run all tests and complete the usual QA checks associated with your change management process as appropriate.
How do I modernize multiple apps at the same time and how can I scale the app mod experience for a large number of apps?
You can use the AppCAT CLI to scan multiple projects at the same time by using the -bulk
flag. However, we recommend that you only modernize one project or app at a time. You can create your own migration task based on code changes from one project and apply them to other projects, reducing repetitive work.
Which model should I use?
As a general rule of thumb, newer models outperform previous models. For coding tasks, we recommend Claud Sonnet models for better accuracy. However to reduce cost, consider starting your exploration from models with a lower multiplier.
Troubleshooting guide
What are the token size limits of the top models?
For detailed model specifications, see the GitHub Copilot documentation.
What are the operational requirements for Java runtime and framework upgrades?
To ensure successful Java runtime and framework upgrades, the following information is required:
- The Project type. The project must be a Git-based Java project buildable with Maven or Gradle.
- The target Java version - the JDK version you want to upgrade to - for example, Java 21.
- The source and target JDK paths - the paths to the installed JDKs for the current and target versions.
- The Maven/Gradle setup - paths to the Maven/Gradle build tools. For Gradle, only Gradle wrappers are supported.
How does GitHub Copilot app modernization use the MCP server, and how can I check for updates or troubleshoot issues?
GitHub Copilot app modernization uses the MCP server to enhance code transformation capabilities. After you install the Visual Studio Code extension, the MCP server is registered and starts automatically.
If you notice a special refresh button in the bottom-right corner of the GitHub Copilot Chat panel, it might indicate that tool updates are available. Select the button to automatically load the latest versions of the tools.
The GitHub Copilot app modernization MCP server also maintains logs. To troubleshoot, check the log files located at: %USERPROFILE%/.ghcp-appmod-java/logs
Why does GitHub Copilot app modernization stop after listing a plan without making any code changes?
Sometimes, GitHub Copilot app modernization requires explicit confirmation before proceeding. You can type yes or continue in the chat to enable the agent to move forward with the code modifications.
Why does GitHub Copilot app modernization frequently prompt me to select **Continue**?
To ensure safer operations, the GitHub Copilot agent repeatedly asks for user confirmation. As a workaround, you can select the dropdown arrow next to the Continue button and then select Always Allow, or update your Visual Studio Code setting chat.tools.autoApprove
to true
to automatically approve all tools. We also recommend configuring chat.agent.maxRequests
to 128
to reduce the number of steps that require confirmation to continue.
What network configurations are required to use GitHub Copilot app modernization in Visual Studio Code?
To ensure that the extension works correctly within Visual Studio Code, network connectivity must be stable and allow access to GitHub Copilot services. In restricted environments, you might need to configure proxy or firewall rules accordingly. If you encounter errors like "Language Model Unavailable" in the chat window, see the official troubleshooting guide Managing GitHub Copilot access to your enterprise's network.
Are there any settings in GitHub Copilot that I should configure to make sure I get all the features?
GitHub Copilot might block certain code generations for files that commonly resemble public code, such as pom.xml. To prevent Copilot from blocking these changes, you must allow suggestions matching public code. For instructions, see Enabling or disabling suggestions matching public code.
To manage the settings for GitHub Copilot in your organization, see Enabling Copilot features in your organization.
Why don't I see tools in GitHub Copilot app modernization that use the Model Context Protocol (MCP) server?
GitHub Copilot app modernization uses the MCP server to provide specialized migration functionalities. When you select Refresh, it establishes a connection with this server and updates the available tools in the chat agent. This action is only necessary in the following cases:
- When you open a Java project for migration for the first time.
- When you upgrade the extension to a newer version.
Why is the code regeneration process unstable?
GitHub Copilot app modernization is powered by AI, so occasional errors might occur. Always review the output carefully before use. You can also retry the regeneration process to see alternative code suggestions.
Where are tasks stored on the local machine and how can they be shared?
Predefined tasks are in the following location: %USERPROFILE%.vscode\extensions\microsoft.migrate-java-to-azure-0.1.0\rag
Custom tasks are in the following location: %USERPROFILE%.azure\migrate-copilot\custom-rule
How can I view more details about the code changes made by the agent?
The agent always includes explanations for its code changes in the chat window. However, these details might be collapsed in the UI. You can expand the response in the chat to see the full rationale and step-by-step reasoning.