Judge tells jurors he will be able to accept only a unanimous decision on seven charges against the comedian
The jury in Russell Brand’s rape and sexual assault trial has retired to consider its verdicts.
Brand, 51, has been described as a ruthless, calculated and manipulative sexual predator during the three-week trial at Southwark crown court. The comedian is accused of seven offences, including rape and sexual assault, against six women in allegations spanning 10 years from 1999. He denies all the charges.
Continue reading...Kellogg’s substitutes ingredient with rice flour, as climate crisis affects availability of some grains
They will snap and they will crackle, but they may no longer pop, as Kellogg’s has removed rice from its Rice Krispies and Coco Pops cereals due to “changing weather conditions”.
Rice Krispies has been reformulated to use rice flour instead of rice, while Coco Pops now contain a blend of rice flour and corn flour instead of rice in order to maintain consistent quality. Kelloggs’ said the shift reflected how the climate crisis had affected the quality and availability of some rice and grains used in its most popular cereals.
Continue reading...Judge tells jurors he will be able to accept only a unanimous decision on seven charges against the comedian
The jury in Russell Brand’s rape and sexual assault trial has retired to consider its verdicts.
Brand, 51, has been described as a ruthless, calculated and manipulative sexual predator during the three-week trial at Southwark crown court. The comedian is accused of seven offences, including rape and sexual assault, against six women in allegations spanning 10 years from 1999. He denies all the charges.
Continue reading...
Какая страница вашего сайта важнее: /catalog/ или статья в блоге двухлетней давности? Пока страниц пятьдесят, на этот вопрос отвечает интуиция. Когда их пять тысяч — интуиция молчит, а структура ссылок превращается в то, что никто в компании целиком не видел: меню ведёт в каталог, блог ссылается на фильтры, фильтры — друг в друга, и где-то в этом клубке есть страницы, до которых внутренний вес добирается по щепотке.
У этой задачи есть старый числовой ответ — PageRank. Не тот, по которому Google ранжирует весь интернет, а его домашняя версия: посчитать веса только по внутренним ссылкам одного сайта. Я написал инструмент, который делает это от краула до отчёта, и в этой статье разберу, как устроена математика, какие грабли собираются по дороге и что из отчёта реально выжимается.
Сразу для прозрачности: инструмент мой, он платный, есть бесплатная редакция с лимитами. Но статья — про методику: формулы, нормировку и интерпретацию можно воспроизвести и своим скриптом, и я покажу, как.
Читать далееTough does not remotely cover the job of the world’s best rugby referees and the lengths to which they go to navigate the sport’s labyrinthine laws
The 13th team participating at the Nations Championship this month are an intriguing bunch. If you didn’t know much about rugby and had wandered into a first-floor conference room at a hotel near Windsor on Monday you might almost have mistaken them for a gathering of airline pilots from nearby Heathrow. Slim, intelligent, studious … you’d trust them to stay calm on the flight deck.
Stick them in matchday kit, however, and the world’s top rugby union referees do not always enjoy universal respect, certainly online. They can be unflappably brilliant for 79 and a half minutes and yet still be defined by one hairline call barely visible to the naked eye. Every Test in which they are involved is an away game and, popularity wise, they often receive the same unconditional love as traffic wardens and the chancellor of the exchequer.
Continue reading...
Представим компанию со счетами в трёх банках. В один приходят платежи покупателей, через другой проходит зарплата, в третьем лежит часть свободных денег. Счета поставщиков и будущие расходы находятся в учётной системе.
В пятницу финансовому директору нужно решить, что оплатить сегодня и сколько оставить на следующую неделю. Для этого недостаточно сложить остатки. Нужно учесть зарплату, проверить ожидаемые поступления и разобраться с уже отправленными платежами. Затем бухгалтер подготовит поручения, передаст их на подпись и сверит исполнение с учётом.
Меня в Open Banking (открытом банкинге) интересует возможность собрать эту работу в одном сервисе. Клиенту нужен ответ на вполне конкретный вопрос: можем ли мы провести эти платежи и что произойдёт после подтверждения?
Моя гипотеза — привычным местом работы с несколькими банками может стать сервис, в котором компания готовит платежи, согласует их и проверяет исполнение. Его может развивать банк, разработчик учётной системы или независимая компания. Попробую разобраться, что для этого дают общие API банков и какую работу всё равно придётся делать отдельно.
Читать далее
India faces a host of development challenges: education and health, manufacturing and jobs, urbanization and pollution. In the world’s most populous country, sheer scale makes addressing each of these daunting, and their convergence even more so. Climate change and artificial intelligence add more uncertainty, making many of these problems more acute in the next two decades. Yet none can be adequately addressed unless the principal actor shaping India’s development—the Indian state—becomes more competent.
The meta development challenge for India will face over the next few decades is the quality, competence and integrity of the state, without which progress elsewhere will remain elusive. Despite its multiple political and social divisions, India’s default ideology is statist: the governing Bharatiya Janata Party on the right, the communists on the left, and nearly everyone in between share a belief that the state should have a central role in controlling the economy and directing social change.
Why, then, is there so little effort devoted to improving how the state functions, even as challenges mount?
In India’s vast federal system, responsibility for development is divided among different levels of government, each of which struggles to fulfil its obligations. Over the past decade, more than 1.5 million people, mostly of working age, have been killed in road accidents in India, at a fatality rate much higher than the global average (per distance traveled). Roughly one-third of the victims have been pedestrians, often killed because Indian cities fail to construct and maintain something as elementary as sidewalks.
The decrepit state of sidewalks exemplifies the depressing state of urban India. It reveals the extreme weakness of urban governance and the determination of state governments to retain control over lucrative urban land.
The private sector is the engine of economic development, but it runs on foundations supplied by the state ranging from law and order to health and education. While India has established a considerable degree of order, it flails on establishing the rule of law.
Violence has declined, but the police remain as much predators as protectors. Tens of millions of cases languish in overwhelmed courts, turning the legal process into principal punishment for all involved. If businesses cannot uphold contracts, women cannot walk safely after dark and minorities live with pernicious insecurity, the foundations of development will remain dangerously fragile.
India may not possess vast natural riches, but it has a cornucopia of people. Turning their potential into human capital would be an invaluable national asset, but the failures of the Indian state, especially its state governments, are nowhere more evident.
Indians live longer than they once did, but not necessarily healthier lives. High levels of malnutrition and stunting diminish the prospects of tens of millions of children. More children attend school but learning outcomes in public schools remain disheartening. Children do not vote; teachers do, and hiring teachers is a lucrative source of rent and political patronage.
The middle class, let alone the wealthy, would rarely consider sending its children to public schools, depriving the system of an influential constituency for reform. In higher education, where the federal government plays a larger role, ideological control and partisan appointments often take precedence over preparing young people for work, leaving millions with degrees that confer neither skills nor opportunity.
India’s checkered development odyssey has much to do with the ailments of the Indian state. Contrary to its overbearing image, the Indian state is relatively small when measured by the number of public employees per capita. And these public employees are frequently moved through the “transfer raj,” which has become another a source of rent for bureaucrats and politicians. Training is usually reserved for elite civil servants. In a generalist civil service overseen by politicians who prize loyalty over competence, expertise becomes an orphan.
These pathologies of the Indian state—a dense thicket of rules and procedures, extreme centralization and rigid hierarchy—are rooted in mistrust and an intensely status-conscious society. The result is an Indian state with the engine of a bullock cart and the brakes of a Rolls-Royce. In recent years, as India’s politics has grown more autocratic, centralization has become more acute within the federal government and in its relations with the states. Yet even as the federal government in New Delhi lords over the provinces, they do the same to local governments.
Unlike China and the United States, which employ many more people at the federal and local levels and fewer at the province level, India concentrates public employment in its states. This concentration of public employment and administrative control in the hands of state governments rather than local governments and municipal bodies has deprived India’s cities and towns of authority and agency.
All of this is widely known. Official reports have documented these failings for six decades. These pathologies persist because while everyone believes in the state and blames it the country’s afflictions, there is no impetus to build a stronger, more competent state.
The state provides immense rents to the political class and bureaucracy, while public employees form a powerful constituency against reform. Administrative reforms excite neither politicians nor intellectuals, and their rewards lie beyond the electoral cycle. A weak state is also easier to capture: politicians can use it to browbeat opponents and the ruling and business elites exploit it to extract rents.
This central development problem of weak state capacity is very unlikely to disappear by 2050. But India can augment capacity even without major administrative reforms. Technology offers the obvious opportunity. India has built a world class digital public infrastructure, which has improved taxation, public procurement and welfare payments.
But the very strengths of that system have also made transferring money to voters remarkably easy, encouraging competitive populism, even as efforts to strengthen core public goods have faltered. To invert the familiar adage, the Indian state prefers to offer citizens fish rather than teach them to fish, preserving their dependence on its largesse and, with it, their pliability as voters.
States can also improve their capabilities by drawing more effectively on civil society and business. Elinor Ostrom, the first woman to win the Nobel Prize in economics, observed that many public goods are “co-produced” by state and society. But such cooperation requires the state to trust civil society instead of seeking to control and muzzle it for political reasons, as is the case in India now. Contracting infrastructure construction or sanitation services to private companies can also help, though its benefits are limited by the persistent danger of rent extraction.
The condition of the Indian State offers little confidence that it recognizes the magnitude of the coming challenges and is gearing itself up to meet them. From the bureaucracy’s ability to formulate and implement policy predictably to the ability of courts, regulators and the Election Commission to enforce rules impartially, the core institutions of the Indian state are weakening.
This “strategic weakness” is not merely an accidental outcome of imperatives of electoral competition crowding out important long-term reforms. It is a deliberate choice by India's political class. Unless that choice changes, it is difficult to imagine India meeting its development goals in the next few decades.

Recently, Dr. Alan Schroeder was walking on the street in New York City when he felt a breeze out of nowhere. “I literally was about four inches away from someone on an e-bike, probably going 30 miles an hour, that I didn't see,” he recalls.
If he’d been hit, the injuries could have been severe, as Schroeder, who is a pediatrician and research scientist at Lucile Packard Children’s Hospital Stanford, well knows. More children are getting hurt or even dying in crashes involving electric devices like e-bikes and e-scooters.
On Nov. 2, Schroeder and his colleagues published a paper in JAMA looking at kids who ended up in a subset of emergency rooms, hospitals, and urgent care centers across the U.S. after accidents on e-bikes, e-scooters, skateboards, and traditional, non-motorized bicycles and scooters. They drew on data from 2023 to 2026.
Injuries from e-bikes showed a roughly 400% relative increase during the study period, and e-scooter injuries rose almost 200%. The team also found that severe injuries—the kind that need surgery or time in the intensive care unit—were about twice as likely when a powered vehicle like an e-bike or e-scooter was involved, compared to regular bikes and scooters.
The numbers are only growing. “This is just an exponential rise in the frequency of these injuries,” says Dr. Stephanie Chao, a pediatric trauma surgeon at Lucile Packard Children’s Hospital Stanford and an author of the new paper, who says she’s worked on “some pretty devastating operations” in children after e-device accidents. The researchers hope their study can provide evidence for policies to rein in e-device usage by children—for instance, by making certain types illegal for kids to use, with charges to be filed against both children and their parents if kids are caught operating them.
Similar to a kick scooter, e-scooters are stand-up, two-wheeled devices that have a powered front wheel operated by a throttle. E-bikes in the U.S. are classified as bicycles with working pedals that have a battery-powered assist, enabling riders to go up hills and achieve greater speeds with less effort. Some have hand-operated throttles so that a rider doesn’t even need to use the pedals. Laws about e-bikes vary by state, with some mandating that the fastest class of e-bikes, which top out at 28 m.p.h., can only be operated by those 16 years old and up, but you don’t need a license or training. In some states, wearing a helmet is legally required, but not in others.
What many people don’t realize, however, is that what people often call “e-bikes” are in fact e-motos, says Dr. Preeti Panda, a pediatric emergency room doctor at Lucile Packard Children’s Hospital Stanford who was not involved in the study but has seen firsthand the rise in cases. She says she sees at least one e-device injury every shift she works.
E-motos, also called electric motorcycles or electric dirt bikes, may be capable of speeds exceeding 60 m.p.h. Regulation is patchy so far, but in California, if these are intended for use on public roads and not just private property, these are classed as motorcycles—meaning that they must be registered and equipped with a license plate, riders must be licensed to drive them and purchase motor vehicle insurance, and people under 16 are not able to get licenses.
When Panda asks her young patients in the emergency room how fast their e-bikes go, though, she gets answers like 35-45 m.p.h., and even higher. “So—that's not an e-bike. In California and in many states now, e-motos are actually illegal to ride on the street” for children who don’t meet the above criteria, she says. “If a child injures someone else or destroys property accidentally on one of these devices that are illegal, both the child and the parents can be held liable and charged criminally. So it's a big deal.”
As part of her own research to understand exactly what electric devices kids are using these days, Panda tours local high school parking lots on what she calls “bicycle counts,” marking down what’s on the bike racks. E-motos tend to “have that banana seat that motorcycles have,” Panda says, while e-bikes usually do not.
“I was out at a few bicycle counts last week,” she continues, “and 80-90% of the e-devices were all e-motos…I saw very few e-bikes.” Legislation and enforcement that takes these vehicles off public roads and out of the hands of younger children, she suggests, could be a substantial public-health boon.
E-bikes and scooters are particularly dangerous for this age group because often, children lack the strength and coordination to pilot these vehicles safely, and sometimes they don’t wear helmets. And it’s not just teens who are using them. “A significant proportion of these injuries are actually in kids younger than the age of 12,” says Chao—a detail from the new study that surprised even the researchers. “A lot of times we think, ‘Oh, this is an older, teenage-type thing,’ but it's not. You're talking about really young middle-school children who really don't have frontal lobe development to be on these really fast motorized vehicles.”
The amount of time required to stop an e-bike, e-scooter, or e-moto is much longer than what’s required to bring a regular bike or scooter to a halt, so any experience children have on traditional devices—like regular bikes and scooters—is unlikely to translate to the electric versions.
The injuries doctors are seeing are largely a result of that speed. “You're not just falling off a bike and maybe breaking an arm. What we're talking about is potentially serious life-threatening injuries now, serious brain injuries” says Chao. “We're talking about middle-school kids whose parents have bought them these bikes.”
Banning e-bikes and e-scooters outright is likely unrealistic, but there’s plenty of room for common-sense limits, the researchers say.
First, consistent, well-enforced age limits might be an effective option. “I don't think that children under 12 should be riding electronic devices,” says Schroeder. “That to me is pretty low-hanging fruit from a policy perspective.” Wearing a helmet designed for high speeds—something more protective than a standard bike helmet—is also a good choice, says Schroeder. Motorbike helmets with facial protection are a better fit for the speeds of these devices.
Schroeder and Chao both stress the importance of not giving children access to these devices without a serious conversation. Some health care groups have begun to release guidance sheets to help steer these chats. “Before we allow our children to be on these bikes or e-scooters, families really need to sit down together,” says Chao, and discuss safety and responsibility that need to come with using these devices.
Click here to submit a picture for publication in these online galleries and/or on the Guardian letters page
Continue reading...The US has seen plenty of terrible speeches over the centuries. But Trump’s midterm rallies are a new low
In a sense, history has already been made. We do not know the result of the election yet, but over the last two months, Americans have endured the worst speeches ever given by a president of the United States.
It is far from a simple matter to adjudicate – there have been so many bad speeches over the years, going back the founders, some of whom dreaded speaking in public. George Washington’s inaugural address did not begin promisingly, with a halting first sentence: “Among the vicissitudes incident to life, no event could have filled me with greater anxieties than that of which the notification was transmitted by your order, and received on the 14th day of the present month.”
Continue reading...Christians in the south of the state seek to vote their values – but a common faith does not mean a common politics
A few days before the Fourth of July, Ron Peterson, the 38-year-old pastor of Longview United Pentecostal church, stood beneath a large white tent in a parking lot in Longview, Washington.
Surrounded by church members selling fireworks for a fundraiser, Peterson remembered watching area residents rally after an industrial accident at the local paper mill killed 11 people in May. “We can all come together,” he said. “There’s not going to be sections in heaven.”
Continue reading...
Привет, я фронтенд-разработчик, и сегодня хочу разобраться с одной интересной особенностью React Server Components.
Если вы работали с RSC, то наверняка замечали, что вокруг них почти всегда появляется ещё один участник — bundler. В документации React прямо говорится, что директивы вроде 'use client' дают инструкции bundler'ам, совместимым с RSC, а при встрече клиентского компонента bundler должен построить для него клиентскую сборку.
Но возникает вполне логичный вопрос. Зачем React Server Components вообще нужен bundler?
Ведь JavaScript уже умеет работать с модулями. Браузер понимает import, умеет загружать ES-модули и поддерживает динамический import().
На первый взгляд можно сделать всё достаточно просто.
Читать далее
In Kherson city, usually seething with Russian drones, friends met at cafes, families were out together and shoppers stocked up. "The city seems alive," said one resident, "just like it used to be."
(Image credit: Svet Jacqueline for NPR)
British Veterinary Association president tells MPs surge in cases putting farmers under severe pressure and stress
The worst bluetongue season on record has been a major animal welfare crisis in Great Britain, MPs have been told, putting farmers under “severe emotional stress”.
Bluetongue, a viral disease that affects sheep, cattle and goats, can cause fever, lesions, stillbirths and death. The tongue may go blue and protrude from the mouth.
Continue reading...
Вышел Kodacode 1.3 и теперь он умеет работать с приложениями на компьютере. А в Desktop появился свой браузер, чтобы открывать страницы рядом с чатом и сразу передавать агенту нужный фрагмент.
Ещё добавили просмотр правок даже без Git, интерактивные прототипы и потоки автоматизаций с AI-агентами. CLI тоже обновили, теперь его удобнее встраивать в CI и собственные инструменты.
В статье показываем, как всё это работает. Питомца тоже покажем. Да, он теперь есть.
Читать далее
Привет, Хабр. Я Михаил Мирошников из департамента данных и рекомендательных систем B2C Сбера. Расскажу о переменах в подготовке банковских коммуникаций: об ИИ-генерации текстовых форматов, их почти моментальном согласовании при помощи LLM-проверок и о том, куда это всё ведёт контентные команды.
Читать далее3PAR 8000/9000 после вендорской поддержки: как посчитать запас жизни СХД
В первой статье блога мы рассказали, кто мы, и разобрали приёмку сервера по журналам BMC. Эта статья про массивы HPE 3PAR, с которыми у нас тот же подход, что и с серверами: покупаем рабочие, проверяем, инициализируем и прогоняем тестами под конкретного клиента, продаём с гарантией и закрываем её собственным складом запчастей. Услуг обслуживания и восстановления чужих инсталляций мы не оказываем.
Текст для владельцев 3PAR, у которых закончилась вендорская поддержка: как по паспорту массива и телеметрии дисков оценить, сколько он ещё проживёт, что должно лежать на полке с запчастями и что в этих массивах ломается в жизни. Практика собрана на десятках машин, прошедших через наш склад, в том числе история, где три «мёртвых» диска ожили от одной команды.
Начнём с дат. 31 августа 2026 года по опубликованному графику HPE закончилась поддержка всей серии 3PAR 8000, моделей 8200, 8400, 8440 и 8450 разом. Серия 9000 продержится ненамного дольше: у 9450 в календаре стоит 1 мая 2027-го. Одна из самых массовых enterprise-СХД российских ЦОДов 2015–2022 годов официально вышла из жизненного цикла вендора.
Для российских владельцев в этих датах меньше драмы, чем кажется. HPE ушла из России ещё в 2022-м: контрактной поддержки, доступа к порталу с прошивками и вендорских замен у большинства местных инсталляций нет уже четвёртый год. EOSL сделал официальным для всего мира то, что здесь давно повседневность: массив живёт ровно настолько, насколько выстроена его собственная система жизнеобеспечения.
Читать далееBritish Veterinary Association president tells MPs surge in cases putting farmers under severe pressure and stress
The worst bluetongue season on record has been a major animal welfare crisis in Great Britain, MPs have been told, putting farmers under “severe emotional stress”.
Bluetongue, a viral disease that affects sheep, cattle and goats, can cause fever, lesions, stillbirths and death. The tongue may go blue and protrude from the mouth.
Continue reading...Puzzle solvers’ unique way of thinking was utilised as a recruiting tool for Bletchley Park. The true enigmas, though, are the people who come up with them in the first place
• Don’t get Cluesletter delivered to your inbox? Sign up here
The world of crossword setters is not enormous. A solver who had completed a puzzle which turned out to have been a recruiting tool for Bletchley Park recalled:
I was told, though not so primitively, that chaps with twisted brains like mine might be suitable for a particular type of work as a contribution to the war effort.
Take UMBRELLA at 77-Down. Today, crossword editors love to focus on a lively angle, such as the 2013 clue [Sidewalk cafe sight] or the trickier [Kind of insurance policy], first used in 1999. A 2007 acrostic puzzle even used [Prop for a filmed dance by Gene Kelly]. But in the first Times crossword, the clue is [Symbol of appeasement], possibly a nod to the British prime minister Neville Chamberlain’s famous rolled umbrella, carried during negotiations for the 1938 Munich Agreement. Talk about a deep cut.
14d Overlapping signs for places of learning (9)
[ wordplay: two star signs which share a common letter ]
[ LIBRA + ARIES, but sharing their A ]
[ definition: places of learning ]
Matt Damon gutted to receive partial cut at beginning and end of his film role?
Continue reading...The British monarch has been stalked by protesters during his visit to the Bahamas, Antigua and Guyana – and they will only become more insistent as time goes on
• Don’t get Cotton Capital delivered to your inbox? Sign up here
The sun is starting to set in the Bahamas and the loud wash of the tide, which is always audible on Nassau’s Western Esplanade, is beginning to be drowned out by the sound of excited screams. King Charles is visiting the Caribbean archipelago, for which he is still the head of state, for the first time in more than 50 years and a youth rally attended by schoolchildren makes for a particularly welcoming crowd.
Some have described the king’s nine-day tour of the Bahamas, Antigua and Guyana amid growing calls for reparations as a significant risk that may accelerate his removal as head of state from the six remaining Caribbean Commonwealth countries in which he still serves.
‘Reparations now’: King and Burnham face protests at Antigua Commonwealth summit | Natricia Duncan
Barack Obama pays tribute to Manchester cotton workers and cites them as an inspiration | Chris Osuh
Continue reading...TeamCity On-Premises 2026.2.2 and 2026.1.6 bug-fix updates are now available. These updates resolve a significant number of issues, including security and performance issues, as well as the following bugs:
As always, we strongly recommend installing these updates, as they address security vulnerabilities and help keep your TeamCity On-Premises instance protected against potential threats.
See TeamCity 2026.1.6 Release Notes and TeamCity 2026.2.2 Release Notes for the complete list of resolved issues.
Staying up to date with minor releases ensures your TeamCity instance benefits from the following:
All TeamCity bug-fix updates released for the same major version share data format. As a result, you can upgrade or downgrade within this series without the need for backup and restoration.
Thank you for reporting issues and providing feedback! If you have questions or run into any problems, please let us know via the TeamCity Forum or Issue Tracker.
Happy building!
In October 2026, the private keys of eight intermediate certificate authorities operated by eMudhra were found to be weak and recoverable from public data. According to eMudhra’s official statement, none of the affected intermediate CAs had issued end-entity (leaf) certificates, and eMudhra is not aware of evidence that the weak keys were recovered or exploited before the issue was disclosed.
The issue is not a vulnerability in TeamCity itself. However, the trust stores maintained by other software components (primarily the Java runtime) that TeamCity relies on may continue to trust the compromised certificates. Starting with versions 2026.2.2 and 2026.1.6, TeamCity shows a health report if the installation still trusts affected certificates, along with remediation steps.
Recommended actions:
On October 17, 2026, the private keys of eight eMudhra intermediate CAs, six for TLS and two for code signing, were reported as compromised. This is an industry-wide certificate authority incident, not an issue specific to TeamCity. Certificates issued with these keys would look valid to any software that still trusts them.
Browser and OS vendors have released updates that block the compromised certificates, and systems are protected once they install them. Software with its own trust store, such as a Java runtime, keeps trusting the compromised certificates until that trust store is updated. TeamCity’s server and build agents use the trust store of their Java runtime.
TeamCity downloads are not signed by an eMudhra CA and are not affected.
javax.net.ssl.trustStore.Optional trust-store verification can identify affected certificates still present in a trust store. If upgrading is not feasible, follow the manual mitigation commands in the same section.
Removing AAA Certificate Services can disrupt unaffected services; test dependent connections before removing that root.
The following server maintenance recommendations apply to TeamCity On-Premises installations. JetBrains patches TeamCity Cloud, but certificates uploaded to the service still require review.
Updating the TeamCity server does not update integrations or third-party software. Review those components separately as described in Review and update supporting infrastructure.
<agent home>/conf/trustedCertificates and remove any affected certificate files. Updating Java does not remove these certificates.Updating the server does not update integrations or third-party software. We recommend reviewing these components independently:
certifi, Node.js, and other tools with separate trust stores.TeamCity CLI is distributed separately from the server and agents and requires its own update. Version 1.6.1 (October 26, 2026) was rebuilt with Go 1.27.3, which includes the fix.
Run teamcity update on every machine where the CLI is used, including build agents, and confirm the version with teamcity --version. Other installation methods are listed on the release page.
Each script defines its environment variables at the top:
TEAMCITY_JRE: Defaults to JAVA_HOME; change it if TeamCity runs on another JRE or JDK.TC_TRUSTSTORE: Set to any custom javax.net.ssl.trustStore (JDK 8 default: jre/lib/security/cacerts).TC_STOREPASS: Change it if the password differs.TC_CERT_DIR: The certificate file to inspect, where indicated.Please note the result applies only to the selected trust store. The commands do not inspect blocked.certs.
Linux and macOS (Bash or zsh):
(
export TEAMCITY_JRE="${TEAMCITY_JRE:-$JAVA_HOME}"
export TC_TRUSTSTORE="$TEAMCITY_JRE/lib/security/cacerts"
export TC_STOREPASS='changeit'
keytool="${TEAMCITY_JRE:?Set TEAMCITY_JRE or JAVA_HOME to the Java home directory of the runtime in use}/bin/keytool"
[ -x "$keytool" ] || { echo "ERROR: keytool not found at $keytool. TEAMCITY_JRE must be the Java home directory (the folder that contains bin/ and lib/)." >&2; exit 1; }
output=$("$keytool" -J-Duser.language=en -list -v \
-keystore "$TC_TRUSTSTORE" -storepass:env TC_STOREPASS) ||
{ echo "ERROR: Certificate check failed." >&2; printf '%s\n' "$output" >&2; exit 1; }
awk '
/^Alias name:/ { alias=$0 }
/86:A1:EC:BA:08:9C:4A:8D|D7:A7:A0:FB:5D:7E:27:31|7D:D7:8D:5F:4F:13:45:9A|F2:ED:AA:FF:3D:9B:70:1F|40:F6:AF:03:46:A9:9A:A1|1A:A0:C2:70:9E:83:1B:D6|CN=EM (DV|OV|EV) (TLS|CS) CA - G3/ {
found=1; print alias; print
}
END {
print found ? "ACTION REQUIRED: this trust store still trusts compromised eMudhra certificates (listed above). Update the Java runtime or apply the manual mitigation." \
: "OK: no compromised eMudhra certificates found in this trust store. No action is needed for it."
}
' <<< "$output"
)
Windows (PowerShell):
& {
$ErrorActionPreference = 'Stop'
if (-not $env:TEAMCITY_JRE) { $env:TEAMCITY_JRE = $env:JAVA_HOME }
$env:TC_TRUSTSTORE = "$env:TEAMCITY_JRE\lib\security\cacerts"
$env:TC_STOREPASS = 'changeit'
if (-not $env:TEAMCITY_JRE) { throw 'Set TEAMCITY_JRE or JAVA_HOME to the Java home directory of the runtime in use.' }
$keytool = "$env:TEAMCITY_JRE\bin\keytool.exe"
if (-not [IO.File]::Exists($keytool)) { throw "keytool not found at $keytool. TEAMCITY_JRE must be the Java home directory (the folder that contains bin\ and lib\)." }
$prev = $ErrorActionPreference; $ErrorActionPreference = 'Continue'
$output = & $keytool '-J-Duser.language=en' -list -v -keystore "$env:TC_TRUSTSTORE" -storepass:env TC_STOREPASS 2>&1
$ErrorActionPreference = $prev
if ($LASTEXITCODE -ne 0) { throw "ERROR: Certificate check failed. $output" }
$pattern = '86:A1:EC:BA:08:9C:4A:8D|D7:A7:A0:FB:5D:7E:27:31|7D:D7:8D:5F:4F:13:45:9A|F2:ED:AA:FF:3D:9B:70:1F|40:F6:AF:03:46:A9:9A:A1|1A:A0:C2:70:9E:83:1B:D6|CN=EM (DV|OV|EV) (TLS|CS) CA - G3'
$alias = ''
$found = $false
foreach ($line in $output) {
if ($line -match '^Alias name:') { $alias = $line }
if ($line -match $pattern) { $found = $true; $alias; $line }
}
if ($found) { 'ACTION REQUIRED: this trust store still trusts compromised eMudhra certificates (listed above). Update the Java runtime or apply the manual mitigation.' }
else { 'OK: no compromised eMudhra certificates found in this trust store. No action is needed for it.' }
}
The health report in versions 2026.2.2 and 2026.1.6 lists affected server certificates. For manual inspection, check custom certificates and identify the affected ones.
Set path to the directory with custom certificates (TC_CERT_DIR) to the following and run the command:
<TeamCity Data Directory>/config/projects/_Root/pluginData/trustedCertificates<agent home>/conf/trustedCertificatesLinux and macOS (Bash or zsh):
(
export TEAMCITY_JRE="${TEAMCITY_JRE:-$JAVA_HOME}"
export TC_CERT_DIR="${TC_CERT_DIR:-/path/to/trusted/certificates}"
keytool="${TEAMCITY_JRE:?Set TEAMCITY_JRE or JAVA_HOME to the Java home directory of the runtime in use}/bin/keytool"
[ -x "$keytool" ] || { echo "ERROR: keytool not found at $keytool. TEAMCITY_JRE must be the Java home directory (the folder that contains bin/ and lib/)." >&2; exit 1; }
[ -d "$TC_CERT_DIR" ] || { echo "ERROR: directory not found: $TC_CERT_DIR. Either no custom certificates have been added yet (TeamCity creates the directory on the first upload), or TC_CERT_DIR is incorrect (server: <TeamCity Data Directory>/config/projects/_Root/pluginData/trustedCertificates, agent: <agent home>/conf/trustedCertificates)." >&2; exit 1; }
found=0
while IFS= read -r f; do
output=$("$keytool" -J-Duser.language=en -printcert -v -file "$f") ||
{ echo "ERROR: Cannot read $f." >&2; printf '%s\n' "$output" >&2; exit 1; }
if grep -Eq '86:A1:EC:BA:08:9C:4A:8D|D7:A7:A0:FB:5D:7E:27:31|7D:D7:8D:5F:4F:13:45:9A|F2:ED:AA:FF:3D:9B:70:1F|40:F6:AF:03:46:A9:9A:A1|1A:A0:C2:70:9E:83:1B:D6|CN=EM (DV|OV|EV) (TLS|CS) CA - G3' <<< "$output"; then
echo "AFFECTED: $f"; found=1
fi
done < <(find "$TC_CERT_DIR" -maxdepth 1 -type f)
[ "$found" = 1 ] && echo "ACTION REQUIRED: the files listed above are compromised eMudhra certificates. Remove them (server: SSL/HTTPS Certificates page; agent: delete the files)." ||
echo "OK: no compromised eMudhra certificates found in $TC_CERT_DIR. No action is needed."
)
Windows (PowerShell):
& {
$ErrorActionPreference = 'Stop'
if (-not $env:TEAMCITY_JRE) { $env:TEAMCITY_JRE = $env:JAVA_HOME }
if (-not $env:TC_CERT_DIR) { $env:TC_CERT_DIR = 'C:\path\to\trusted\certificates' }
if (-not $env:TEAMCITY_JRE) { throw 'Set TEAMCITY_JRE or JAVA_HOME to the Java home directory of the runtime in use.' }
$keytool = "$env:TEAMCITY_JRE\bin\keytool.exe"
if (-not [IO.File]::Exists($keytool)) { throw "keytool not found at $keytool. TEAMCITY_JRE must be the Java home directory (the folder that contains bin\ and lib\)." }
if (-not [IO.Directory]::Exists($env:TC_CERT_DIR)) { throw "ERROR: directory not found: $env:TC_CERT_DIR. Either no custom certificates have been added yet (TeamCity creates the directory on the first upload), or TC_CERT_DIR is incorrect (server: <TeamCity Data Directory>\config\projects\_Root\pluginData\trustedCertificates, agent: <agent home>\conf\trustedCertificates)." }
$pattern = '86:A1:EC:BA:08:9C:4A:8D|D7:A7:A0:FB:5D:7E:27:31|7D:D7:8D:5F:4F:13:45:9A|F2:ED:AA:FF:3D:9B:70:1F|40:F6:AF:03:46:A9:9A:A1|1A:A0:C2:70:9E:83:1B:D6|CN=EM (DV|OV|EV) (TLS|CS) CA - G3'
$found = $false
foreach ($file in Get-ChildItem -LiteralPath $env:TC_CERT_DIR -File) {
$output = & $keytool '-J-Duser.language=en' -printcert -v -file $file.FullName
if ($LASTEXITCODE -ne 0) { throw "ERROR: Cannot read $($file.FullName). $output" }
if ($output -match $pattern) { "AFFECTED: $($file.FullName)"; $found = $true }
}
if ($found) { 'ACTION REQUIRED: the files listed above are compromised eMudhra certificates. Remove them (server: SSL/HTTPS Certificates page; agent: delete the files).' }
else { "OK: no compromised eMudhra certificates found in $env:TC_CERT_DIR. No action is needed." }
}
Before execution, make sure TEAMCITY_JRE in the current terminal points to the runtime actually running the TeamCity component:
teamcity.agent.jvm.java.home on the agent’s Parameters tab, as described in the Java Update Guide.lib/security/blocked.certs from a JDK containing the fix for CVE-2026-91403 to the same location in the runtime in use. Java 8 uses jre/lib/security/blacklisted.certs, while some Java 11 and 13 builds also use blacklisted.certs, so verify the path before copying.Linux and macOS (Bash or zsh):
(
export TEAMCITY_JRE="${TEAMCITY_JRE:-$JAVA_HOME}"
export TC_TRUSTSTORE="$TEAMCITY_JRE/lib/security/cacerts"
export TC_STOREPASS='changeit'
keytool="${TEAMCITY_JRE:?Set TEAMCITY_JRE or JAVA_HOME to the Java home directory of the runtime in use}/bin/keytool"
[ -x "$keytool" ] || { echo "ERROR: keytool not found at $keytool. TEAMCITY_JRE must be the Java home directory (the folder that contains bin/ and lib/)." >&2; exit 1; }
[ -w "$TC_TRUSTSTORE" ] || { echo "ERROR: cannot write to $TC_TRUSTSTORE (missing or no permission). Run with sudo or as the owner of the Java installation." >&2; exit 1; }
output=$("$keytool" -J-Duser.language=en -list -v \
-keystore "$TC_TRUSTSTORE" -storepass:env TC_STOREPASS) ||
{ echo "ERROR: Certificate check failed." >&2; printf '%s\n' "$output" >&2; exit 1; }
affected=$(awk '
/^Alias name:/ { alias=substr($0, 13) }
/SHA256: (86:A1:EC:BA:08:9C:4A:8D:3B:BE:27:34:C6:12:BA:34:1D:81:3E:04:3C:F9:E8:A8:62:CD:5C:57:A3:6B:BE:6B|D7:A7:A0:FB:5D:7E:27:31:D7:71:E9:48:4E:BC:DE:F7:1D:5F:0C:3E:0A:29:48:78:2B:C8:3E:E0:EA:69:9E:F4|7D:D7:8D:5F:4F:13:45:9A:83:DF:F9:AB:BB:A6:2E:DB:AF:6F:2D:10:2B:F2:57:FD:71:2F:4D:9F:27:46:ED:8D|F2:ED:AA:FF:3D:9B:70:1F:B4:D1:4C:9F:28:5F:8C:0B:AD:90:FC:3B:CC:1F:A0:7D:47:F4:71:8E:DA:BA:34:A5|40:F6:AF:03:46:A9:9A:A1:CD:1D:55:5A:4E:9C:CE:62:C7:F9:63:46:03:EE:40:66:15:83:3D:C8:C8:D0:03:67|1A:A0:C2:70:9E:83:1B:D6:E3:B5:12:9A:00:BA:41:F7:EE:EF:02:08:72:F1:E6:50:4B:F0:F6:C3:F2:4F:3A:F3)/ { print alias }
' <<< "$output")
[ -n "$affected" ] || { echo "OK: this trust store contains no compromised eMudhra roots. Nothing to delete."; exit 0; }
while IFS= read -r alias; do
echo "Deleting: $alias"
"$keytool" -delete -alias "$alias" -keystore "$TC_TRUSTSTORE" -storepass:env TC_STOREPASS || exit 1
done <<< "$affected"
echo "DONE: removed the compromised root certificates listed above. Restart the TeamCity server node or agent, then run the verification again."
)
Windows (PowerShell):
& {
$ErrorActionPreference = 'Stop'
if (-not $env:TEAMCITY_JRE) { $env:TEAMCITY_JRE = $env:JAVA_HOME }
$env:TC_TRUSTSTORE = "$env:TEAMCITY_JRE\lib\security\cacerts"
$env:TC_STOREPASS = 'changeit'
if (-not $env:TEAMCITY_JRE) { throw 'Set TEAMCITY_JRE or JAVA_HOME to the Java home directory of the runtime in use.' }
$keytool = "$env:TEAMCITY_JRE\bin\keytool.exe"
if (-not [IO.File]::Exists($keytool)) { throw "keytool not found at $keytool. TEAMCITY_JRE must be the Java home directory (the folder that contains bin\ and lib\)." }
try { [IO.File]::Open($env:TC_TRUSTSTORE, 'Open', 'ReadWrite').Dispose() }
catch { throw "ERROR: cannot write to $env:TC_TRUSTSTORE. Run PowerShell as Administrator or as the owner of the Java installation. ($($_.Exception.Message))" }
$prev = $ErrorActionPreference; $ErrorActionPreference = 'Continue'
$output = & $keytool '-J-Duser.language=en' -list -v -keystore "$env:TC_TRUSTSTORE" -storepass:env TC_STOREPASS 2>&1
$ErrorActionPreference = $prev
if ($LASTEXITCODE -ne 0) { throw "ERROR: Certificate check failed. $output" }
$roots = '86:A1:EC:BA:08:9C:4A:8D:3B:BE:27:34:C6:12:BA:34:1D:81:3E:04:3C:F9:E8:A8:62:CD:5C:57:A3:6B:BE:6B|D7:A7:A0:FB:5D:7E:27:31:D7:71:E9:48:4E:BC:DE:F7:1D:5F:0C:3E:0A:29:48:78:2B:C8:3E:E0:EA:69:9E:F4|7D:D7:8D:5F:4F:13:45:9A:83:DF:F9:AB:BB:A6:2E:DB:AF:6F:2D:10:2B:F2:57:FD:71:2F:4D:9F:27:46:ED:8D|F2:ED:AA:FF:3D:9B:70:1F:B4:D1:4C:9F:28:5F:8C:0B:AD:90:FC:3B:CC:1F:A0:7D:47:F4:71:8E:DA:BA:34:A5|40:F6:AF:03:46:A9:9A:A1:CD:1D:55:5A:4E:9C:CE:62:C7:F9:63:46:03:EE:40:66:15:83:3D:C8:C8:D0:03:67|1A:A0:C2:70:9E:83:1B:D6:E3:B5:12:9A:00:BA:41:F7:EE:EF:02:08:72:F1:E6:50:4B:F0:F6:C3:F2:4F:3A:F3'
$alias = ''
$aliases = foreach ($line in $output) {
if ($line -match '^Alias name: (.+)$') { $alias = $Matches[1] }
if ($line -match "SHA256: ($roots)") { $alias }
}
if (-not $aliases) { 'OK: this trust store contains no compromised eMudhra roots. Nothing to delete.'; return }
foreach ($a in $aliases) {
"Deleting: $a"
$ErrorActionPreference = 'Continue'
$result = & $keytool -delete -alias $a -keystore "$env:TC_TRUSTSTORE" -storepass:env TC_STOREPASS 2>&1
$ErrorActionPreference = $prev
if ($LASTEXITCODE -ne 0) { throw "ERROR: Failed to delete $a. $result" }
}
'DONE: removed the compromised root certificates listed above. Restart the TeamCity server node or agent, then run the verification again.'
}
Afterwards, run the verification commands above to confirm the roots are gone. Restart the server node or agent after completing the mitigation. Include any custom trust stores in the review.
JetBrains’ assessment and guidance on the eMudhra Certificate Authority incident is available here.
Not directly. As a CI/CD system, TeamCity connects to multiple integrations and relies on Java runtimes, build tools, and other components with separate trust stores. These trust stores require independent review and updates, as described in What you need to do.
Upgrading to 2026.2.2 or 2026.1.6 is recommended. These releases add the health report, other product improvements, and fixes for other vulnerabilities.
Upgrading TeamCity does not always update Java, so review the corresponding runtime using the Optional trust-store verification section above. If upgrading TeamCity is not currently an option, apply the mitigations described in If upgrading is not feasible above.
TeamCity Cloud has already been updated, but customers must still check:
No. The health report checks the server nodes only. Check and fix build agents manually, as described in TeamCity Agents above.
Images for versions 2026.2.2 and 2026.1.6 are patched, so please update if possible. Older images can be patched as described in TeamCity Server and TeamCity Agents above, and then used to recreate the containers.
Yes. TeamCity CLI is a Go application, and versions before 1.6.1 were built with an affected Go release. Update as described in Update TeamCity CLI.
For any questions regarding this issue, please get in touch with the TeamCity Support team by submitting a ticket. To report a security issue in TeamCity, please follow our Coordinated Disclosure Policy.